--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/basiclocationinfodisplay/blid/ui/src/CHtkTripMeterControl.cpp Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,2149 @@
+/*
+* Copyright (c) 2007-2008 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: Blid application Tripmeter view's control class definition.
+*
+*/
+
+
+// SYSTEM INCLUDES
+#include <coemain.h>
+#include <akncontext.h>
+#include <aknnavide.h>
+#include <eikspane.h>
+#include <StringLoader.h>
+#include <akntitle.h>
+#include <akntabgrp.h>
+#include <blid.mbg>
+#include <blid.rsg>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <centralrepository.h>
+#include <aknnotedialog.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <AknUtils.h>
+#include <AknsConstants.h>
+
+#include <alf/alfenv.h>
+#include <alf/alfanchorlayout.h>
+#include <alf/alftextvisual.h>
+#include <alf/alfborderbrush.h>
+#include <alf/alfbrusharray.h>
+#include <alf/alfevent.h>
+#include <alf/alftransformation.h>
+#include <alf/alfimagevisual.h>
+#include <alf/alftexture.h>
+#include <alf/alfroster.h>
+#include <alf/alflinevisual.h>
+#include <alf/alfcurvepath.h>
+#include <alf/alfcurvepathlayout.h>
+#include <alf/alfimagebrush.h>
+#include <alf/alfframebrush.h>
+#include <alf/alfdecklayout.h>
+#include <alf/alftextstyle.h>
+#include <alf/alfutil.h>
+#include <alf/alfimageloaderutil.h>
+// USER INCLUDES
+#include "CBlidBaseView.h"
+#include "CBlidEng.h"
+#include "CHtkTripMeterControl.h"
+#include "Blid.hrh"
+#include "CHtkTripMeterControl.h"
+#include "MBlidRouter.h"
+#include "MBlidSettings.h"
+#include "MBlidLocation.h"
+#include "e32const.h"
+#include "Blidutils.h"
+#include "bliduiconsts.h"
+#include "BlidSettingsCrkeys.h"
+#include "Debug.h"
+
+_LIT( KText1, " " );
+_LIT( KDistanceFormat,"%.1f" );
+const TInt KTimerInterval = 200000;
+
+// ================= MEMBER FUNCTIONS =======================
+// ---------------------------------------------------------
+// CHtkTripMeterControl::NewL()
+// ---------------------------------------------------------
+//
+CHtkTripMeterControl* CHtkTripMeterControl::NewL(CAlfEnv& aEnv,
+ MKeyProcessor& aKeyProcessor,
+ MObjectProvider* /*aParent*/,
+ const TRect& aRect,
+ MBlidLocation* aLocation,
+ MBlidRouter* aRouter,
+ CBlidEng& aEngine,
+ CBlidBaseView& aView)
+ {
+ CHtkTripMeterControl* self =
+ new (ELeave) CHtkTripMeterControl( aEnv, aKeyProcessor, *aRouter, aView, aEngine );
+ CleanupStack::PushL(self);
+ self->ConstructL(aEnv, aRect, aLocation, aEngine );
+ CleanupStack::Pop( self ); // self
+ return self;
+ }
+
+
+// ---------------------------------------------------------
+//
+//CHtkTripMeterControl::CHtkTripMeterControl()
+// ---------------------------------------------------------
+//
+CHtkTripMeterControl::CHtkTripMeterControl(CAlfEnv& aEnv,
+ MKeyProcessor& /*aKeyProcessor*/,
+ MBlidRouter& aRouter,
+ CBlidBaseView& aView,
+ CBlidEng& aEngine )
+ : CAlfControl( ),iRouter( aRouter ),iView( aView ), iEngine(aEngine),iEnv(aEnv)
+
+ {
+ }
+
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::ConstructL()
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::ConstructL( CAlfEnv& aEnv,
+ const TRect& /*aRect*/,
+ MBlidLocation* aLocation,
+ CBlidEng& aEngine )
+ {
+
+ CAlfControl::ConstructL( aEnv );
+
+ iLocation = aLocation ;
+ iSpeedCount = 0;
+ iSettingsModel = aEngine.SettingsModel();
+
+ iDurationFormatLong = CEikonEnv::Static()->AllocReadResourceL(
+ R_QTN_TIME_DURAT_LONG_WITH_ZERO );
+
+ iSpeedFormatKmph = CEikonEnv::Static()->AllocReadResourceL( R_BLID_METRIC_SPEED_FORMAT );
+
+ iSpeedFormatMph = CEikonEnv::Static()->AllocReadResourceL( R_BLID_IMPERIAL_SPEED_FORMAT );
+
+
+ /// item's formats
+ iDataBlank = StringLoader::LoadL( R_BLID_BLANK, CEikonEnv::Static() );
+ iTripDistance = HBufC::NewL( KBlidLBItemMaxLen );
+ iOdometerDistance = HBufC::NewL( KBlidLBItemMaxLen );
+ iImagePath = HBufC::NewL( iEnv.TextureManager().ImagePath().Length() + 1 );
+ iImagePath->Des().Copy( iEnv.TextureManager().ImagePath() );
+
+ iRepository = CRepository::NewL( KCRUidBlidOdometerSettings );
+ TInt error = iRepository->Get( KBlidOdometerSettingsValue, iLastodometerValue );
+ if( error == KErrNone )
+ {
+ iOdoValueToStore = iLastodometerValue;
+ FormatOdometerDistance( iLastodometerValue );
+ }
+
+ TInt textStyleId = iEnv.TextStyleManager().
+ CreatePlatformTextStyleL( EAknLogicalFontDigitalFont,
+ EAlfTextStyleSmall );
+ iStyle1 = iEnv.TextStyleManager().TextStyle( textStyleId );
+ iStyle1->SetBold( ETrue );
+ iStyle1->SetTextSizeInPixels( 22, ETrue );
+
+ // Create a single text visual. The pointer to the visual is stored
+ // as a member variable for later access.
+ CreateNaviPaneL( EFalse );
+ ActivateTabL( *iDecoratedTabGroup, EBlidNavigationView );
+
+ iIsLessThanInitial = EFalse;
+ iSTripDimmed = EFalse;
+
+ CalculateRects();
+ iTripLayout = CAlfAnchorLayout::AddNewL( *this );
+ CreateTripVisualsL();// ordinal 0 to 8
+ CreateSpeedVisualsL();// ordinal 9 to 17
+ CreateSignalTexturesL();
+ CreatePopupImgTextureL();
+ // image visual for signal strength
+ iImageVisual = CAlfImageVisual::AddNewL(*this, iTripLayout);// ordinal 18
+
+ LaunchDeviceNotAvlNoteL( );
+ SetAnchors();
+
+ // Make the dial in zeroth position
+ iNextAngle = -( ( 240.0 / iMaxScale ) * iCurrSpeed ) + 30;
+ RotateSpeedDialL( iPrevAngle, iNextAngle );
+ iPrevAngle = iNextAngle;
+ isDeviceUnavailableDisplayed = EFalse;
+ iIsDownPressed = EFalse;
+ }
+
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::CreateSpeedVisualsL()
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::CreateSpeedVisualsL()
+ {
+ TInt j = 0;
+ HBufC* lTextSpeed = HBufC::NewLC( 20 );
+
+ for ( TInt i = 0; i < 9; i++ )
+ {
+ iMileVisual[i] = CAlfTextVisual::AddNewL( *this, iTripLayout );// ordinal 9 to 17
+ lTextSpeed->Des().Zero();
+ lTextSpeed->Des().AppendNum( j );
+ j = j + 5;
+ iMileVisual[i]->SetTextL( *lTextSpeed );
+ iMileVisual[i]->SetTextStyle( iStyle1->Id() );
+ iMileVisual[i]->SetColor( KRgbWhite );
+ iMileVisual[i]->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+ iMileVisual[i]->SetPadding(TAlfBoxMetric(TAlfMetric(.04, EAlfUnitNormalized)));
+ }
+
+ iMaxScale = j - 5;
+ CleanupStack::PopAndDestroy( lTextSpeed );
+ }
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::CreateGlobeVisualL
+// ----------------------------------------------------
+//
+void CHtkTripMeterControl::CreatePopUpVisualL( )
+ {
+ // code to load svg icon
+ MAlfBitmapProvider* provider = NULL;
+
+ // first creste the image loader utils and then call SetSize.
+ iView.ImageLoaderUtils()->SetSize( TAlfRealSize( 60, 60 ) );
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_01, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_01_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture1 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture1);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_02, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_02_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture2 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture2);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_03, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_03_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture3 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture3);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_04, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_04_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture4 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture4);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_05, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_05_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture5 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture5);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_06, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_06_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture6 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture6);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_07, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_07_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture7 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture7);
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSearching, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_searching_08, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_searching_08_mask ); // bitmap mask id defiened in mbg file
+ // now using that bitmap provider create the texture.
+ CAlfTexture & texture8 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iPopupTextures.Append(&texture8);
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::ChangeSpeedometerScaleL()
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::ChangeSpeedometerScaleL()
+ {
+ TInt j = 0;
+ HBufC* lTextSpeed = HBufC::NewLC( 20 );
+ for ( TInt i = 0; i < 9; i++ )
+ {
+ lTextSpeed->Des().Zero();
+ if( iCurrSpeed > 40 &&
+ iCurrSpeed <= 200 )
+ {
+ lTextSpeed->Des().AppendNum( j );
+ j = j + 25;
+ }
+ else if( iCurrSpeed <= 40 )
+ {
+ lTextSpeed->Des().AppendNum( j );
+ j = j + 5;
+ }
+ iMileVisual[i]->SetTextL( *lTextSpeed );
+ }
+
+ if( iCurrSpeed > 40 &&
+ iCurrSpeed <= 200 )
+ {
+ iMaxScale = j - 25;
+ }
+ else if( iCurrSpeed < 40 )
+ {
+ iMaxScale = j - 5;
+ }
+
+ CleanupStack::PopAndDestroy( lTextSpeed );
+
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::CreateSpeedFormatsL()
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::CreateSpeedFormatsL()
+ {
+ iSpeedFormatVisual = CAlfTextVisual::AddNewL( *this, iTripLayout );// ordinal 18
+ TInt typefaceStyleId = iEnv.TextStyleManager().CreatePlatformTextStyleL(EAknLogicalFontPrimarySmallFont, EAlfTextStyleSmall);
+
+ if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+ {
+ iSpeedFormatVisual->SetTextL( *iSpeedFormatKmph );
+ }
+ else
+ {
+ iSpeedFormatVisual->SetTextL( *iSpeedFormatMph );
+ }
+ iSpeedFormatVisual->SetTextStyle( typefaceStyleId );
+ iSpeedFormatVisual->SetColor( KRgbWhite );
+ iSpeedFormatVisual->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+ iSpeedFormatVisual->SetPadding(TAlfBoxMetric(TAlfMetric(.03, EAlfUnitNormalized)));
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::CreateTripVisualsL()
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::CreateTripVisualsL( )
+ {
+ MAlfBitmapProvider* provider = NULL;
+
+ iBigTripVisual = CAlfImageVisual::AddNewL(*this, iTripLayout);// ordinal 0
+
+ // create the bitmap provider
+ iView.ImageLoaderUtils()->SetSize( iBigTripRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidTpmeter, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_tpmeter, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_tpmeter_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & tripTexture1 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iBigTripVisual->SetImage(TAlfImage(tripTexture1));// big trip
+
+ iTripDeckVisual = CAlfImageVisual::AddNewL(*this, iTripLayout);// ordinal 1
+
+ iView.ImageLoaderUtils()->SetSize( iTripDeckRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidInfo, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_info, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_info_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & tripTexture2 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iTripDeckVisual->SetImage( TAlfImage( tripTexture2 ) );//trip table
+
+ iTripMeter = CAlfTextVisual::AddNewL( *this, iTripLayout );// ordinal 2
+ TRgb rgb;
+ AknsUtils::GetCachedColor ( AknsUtils::SkinInstance(),
+ rgb,
+ KAknsIIDQsnTextColors,
+ EAknsCIQsnTextColorsCG1
+ );
+
+ iTripMeter->SetColor( rgb );
+ iTripMeter->SetClipping( EFalse );
+ iTripMeter->SetTextStyle( iStyle1->Id() );
+ iTripMeter->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+
+ iOdoDeckVisual = CAlfImageVisual::AddNewL(*this, iTripLayout );// ordinal 3
+
+ iView.ImageLoaderUtils()->SetSize( iOdoDeckRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidInfo, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_info, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_info_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & tripTexture6 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iOdoDeckVisual->SetImage( TAlfImage( tripTexture6 ) );//odometer table
+
+ iOdoMeter = CAlfTextVisual::AddNewL( *this, iTripLayout );// ordinal 4
+ iOdoMeter->SetColor( rgb );
+ iOdoMeter->SetClipping( EFalse );
+ iOdoMeter->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+ iOdoMeter->SetTextStyle( iStyle1->Id() );
+ iOdoMeter->SetTextL( *iOdometerDistance );
+
+ // Speed Format
+ CreateSpeedFormatsL();// ordinal 5
+
+ iTripDialVisual = CAlfImageVisual::AddNewL(*this, iTripLayout );// ordinal 6
+
+ iView.ImageLoaderUtils()->SetSize( iTripDialRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidTpPointer, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_tp_pointer, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_tp_pointer_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & tripTexture4 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iTripDialVisual->SetImage( TAlfImage( tripTexture4 ) );//pointer
+
+ iTripTimeVisual = CAlfImageVisual::AddNewL(*this, iTripLayout );// ordinal 7
+
+ iView.ImageLoaderUtils()->SetSize( iClockImageRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidTime, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_time, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_time_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & tripTexture7 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iTripTimeVisual->SetImage( TAlfImage( tripTexture7 ) );//clock
+
+ // trip time text
+ iTriptime = CAlfTextVisual::AddNewL( *this, iTripLayout );// ordinal 8
+ iTriptime->SetColor( rgb );
+ iTriptime->SetClipping( EFalse );
+ iTriptime->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+ iTriptime->SetTextStyle( iStyle1->Id() );
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::~CHtkTripMeterControl()
+// ---------------------------------------------------------
+//
+CHtkTripMeterControl::~CHtkTripMeterControl()
+ {
+ delete iPeriodic;
+ iPeriodic = NULL;
+ iPopupTextures.Reset();
+ iPopupTextures.Close();
+ delete iDecoratedTabGroup;
+ delete iDurationFormatLong;
+ delete iDataBlank;
+ delete iOdometerDistance;
+ delete iTripDistance;
+ delete iSpeedFormatKmph;
+ delete iSpeedFormatMph;
+ delete iRepository;
+ delete iImagePath;
+ iSignalTextures.Reset();
+ iSignalTextures.Close();
+ }
+
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::UpdateL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::UpdateL()
+ {
+ if((iEngine.AppMode() == CBlidEng::EAppForeground) &&
+ (iSettingsModel->GetBacklightOption() == EBlidBackLightOnDuringNavigation) && !iView.IsSettingsViewActive() )
+ {
+ User::ResetInactivityTime();
+ }
+
+ if( iLocation->IsGPSDataAvailable() )
+ {
+ isDeviceUnavailableDisplayed = EFalse;
+ if( iView.CBAPtr() )
+ {
+ iView.CBAPtr()->SetCommandSetL( R_BLID_SOFTKEYS_OPTIONS_EXIT__CONTEXTOPTIONS );
+ iView.CBAPtr()->DrawDeferred();
+ }
+ TInt satCount = 0;
+ iLocation->GetNumOfSatellitesL( satCount );
+ DisplaySatelliteSignalStrength( satCount );
+ if( !iSTripDimmed )
+ {
+ iTripLayout->SetOpacity( 1.0 );
+ }
+ iPopUpLayout->SetOpacity( 0.0 );
+ }
+ else
+ {
+ TFileName imagepathname;
+ DisplaySatelliteSignalStrength( 0 );
+ iTripLayout->SetOpacity( 0.3 );
+ iPopUpLayout->SetOpacity( 1.0 );
+ // for MSK enabled phone add MSK
+ if( iView.CBAPtr() )
+ {
+ iView.CBAPtr()->SetCommandSetL( R_BLID_OPTION_INFO_EXIT );
+ iView.CBAPtr()->DrawDeferred();
+ }
+ if( iPeriodic )
+ {
+ delete iPeriodic;
+ iPeriodic = NULL;
+ }
+ if( iLocation->WaitingGPSData() )
+ {
+ isSatelliteInfoLaunch = ETrue;
+ if(KNumOfSearchIcon != iPopupTextures.Count())
+ CreatePopUpVisualL( );
+ HBufC* noteText = StringLoader::LoadLC( R_BLID_STARTUP_NAVITEXT_SEARCHING_GPS_SATELLITES, CEikonEnv::Static() );
+ iPopUpMsg->SetTextL( *noteText );
+ iDisplayIcon = 1;
+ iPeriodic = CPeriodic::NewL(0); // neutral priority
+ iPeriodic->Start( TTimeIntervalMicroSeconds32( KTimerInterval ),
+ TTimeIntervalMicroSeconds32( KTimerInterval ),
+ TCallBack(Tick, this));
+ UpdateVisualImage();
+ CleanupStack::PopAndDestroy(noteText); //noteText
+ }
+ else
+ {
+ isSatelliteInfoLaunch = EFalse;
+ HBufC* noteText = StringLoader::LoadLC( R_BLID_ERROR_NO_GPS_DEVICE, CEikonEnv::Static() );
+ iPopUpMsg->SetTextL( *noteText );
+ iPopImage->SetImage(TAlfImage( *iPopupImgTexture ) );
+ CleanupStack::PopAndDestroy(noteText); //noteText
+ if(!isDeviceUnavailableDisplayed)
+ {
+ CHWRMLight* aHWRMLight = CHWRMLight::NewL();
+ isDeviceUnavailableDisplayed = ETrue;
+ if(aHWRMLight->LightStatus(CHWRMLight::EPrimaryDisplay) != CHWRMLight::ELightOn)
+ {
+ User::ResetInactivityTime();
+ aHWRMLight->LightOnL(CHWRMLight::EPrimaryDisplay);
+ aHWRMLight->ReleaseLight(CHWRMLight::EPrimaryDisplay);
+ }
+ delete aHWRMLight;
+ }
+ }
+ }
+
+ if( iLocation->HasTripStarted() ||
+ iLocation->IsTripCleared() ||
+ iLocation->IsTripReset() )
+ {
+ SetTRipMeterValueL();
+ SetOdoMeterValueL();
+ SetTripTimeL();
+ SetTripSpeed();
+ }
+ // logic for rotating the dial
+ if( iLocation->HasTripStarted() &&
+ !iLocation->IsTripCleared() &&
+ !iLocation->IsTripReset() &&
+ iLocation->IsGPSDataAvailable() )
+ {
+ // Calculate Current Speed
+ if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+ {
+ iCurrSpeed = ( iLocation->GetTripMaxSpeed() ) * KSpeedConvertion;
+ }
+ else
+ {
+ iCurrSpeed = ( iLocation->GetTripMaxSpeed() ) * KSpeedConvertion;
+ iCurrSpeed *= KKilometreToMiles;
+ }
+ // Check if scale has to be changed
+ if( iCurrSpeed > 40 && iMaxScale == 40 )
+ {
+ ChangeSpeedometerScaleL();
+ }
+ if( iCurrSpeed <= 40 && iMaxScale == 200 )
+ {
+ ChangeSpeedometerScaleL();
+ }
+ // Calculate Next Angle
+ iNextAngle = -( ( 240.0 / iMaxScale ) * iCurrSpeed ) + 30;
+ // Rotate dial
+ RotateSpeedDialL( iPrevAngle, iNextAngle );
+ // Set prev angle
+ iPrevAngle = iNextAngle;
+
+ }
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::Tick()
+// ---------------------------------------------------------
+//
+TInt CHtkTripMeterControl::Tick(TAny* aObject)
+ {
+ ((CHtkTripMeterControl*)aObject)->UpdateVisualImage(); // cast, and call non-static function
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::UpdateVisualImage
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::UpdateVisualImage()
+ {
+ if( isSatelliteInfoLaunch )
+ {
+ if(KNumOfSearchIcon > iDisplayIcon)
+ {
+ iDisplayIcon++;
+ }
+ else
+ {
+ iDisplayIcon = 1;
+ }
+ //iPopImage->SetSize( animationRect.Size() );
+ iPopImage->SetImage( TAlfImage( *iPopupTextures[iDisplayIcon-1] ) );//N
+ }
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::DisplayInfoPopUpMsgL
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::DisplayInfoPopUpMsgL()
+ {
+ if( isSatelliteInfoLaunch )
+ {
+ iView.LaunchSatelliteInfoDlgL();
+ }
+ else
+ {
+ LaunchInfoQueryDlgL();
+ }
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::LaunchDeviceNotAvlNoteL
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::LaunchDeviceNotAvlNoteL( )
+ {
+ TInt typefaceStyleId = iEnv.TextStyleManager().CreatePlatformTextStyleL(EAknHighestLogicalFont, EAlfTextStyleNormal);
+ CAlfTextStyle* style1 = iEnv.TextStyleManager().TextStyle( typefaceStyleId );
+
+ iPopUpLayout = CAlfAnchorLayout::AddNewL( *this );
+
+ iPopupDeck = CAlfDeckLayout::AddNewL( *this, iPopUpLayout );
+
+ iPopUpLayout->SetAnchor(EAlfAnchorTopLeft, 0,
+ EAlfAnchorOriginHCenter, EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( -0.05, 0.05));
+ iPopUpLayout->SetAnchor(EAlfAnchorBottomRight, 0,
+ EAlfAnchorOriginHCenter, EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( 0.4, 0.38));
+
+ iPopupDeck->EnableBrushesL();
+
+ TAlfXYMetric edgeoffset(TAlfMetric( 0.01, EAlfUnitNormalized ));
+ iFrameBrush = CAlfFrameBrush::NewL(iEnv, KAknsIIDQsnFrPopup, edgeoffset);
+ iFrameBrush->SetFrameRectsL(TRect(12,12,167,167), TRect(11,11,170,170));
+ iFrameBrush->SetEdgeOffset(edgeoffset);
+ iPopupDeck->Brushes()->AppendL( iFrameBrush, EAlfHasOwnership );
+
+ iPopUpAnchor = CAlfAnchorLayout::AddNewL( *this, iPopupDeck );
+
+ iPopUpAnchor->EnableBrushesL();
+
+ iPopUpMsg = CAlfTextVisual::AddNewL( *this, iPopUpAnchor );
+ iPopImage = CAlfImageVisual::AddNewL( *this, iPopUpAnchor );
+ style1->SetTextSizeInPixels(20, ETrue );
+ style1->SetBold( EFalse );
+
+ TRgb rgb;
+ AknsUtils::GetCachedColor ( AknsUtils::SkinInstance(),
+ rgb,
+ KAknsIIDQsnTextColors,
+ EAknsCIQsnTextColorsCG1
+ );
+
+ iPopUpMsg->SetColor( rgb );
+ iPopUpMsg->SetTextL( KText1 );
+ iPopUpMsg->SetTextStyle( style1->Id() );
+ iPopUpMsg->SetPadding(TAlfBoxMetric(TAlfMetric(.1, EAlfUnitNormalized)));
+ iPopUpMsg->SetWrapping( CAlfTextVisual::ELineWrapBreak );
+ iPopUpMsg->SetAlign( EAlfAlignHCenter, EAlfAlignVCenter );
+
+ iPopUpAnchor->SetAnchor(EAlfAnchorTopLeft, 0,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( 0.02, 0.02));
+ iPopUpAnchor->SetAnchor(EAlfAnchorBottomRight, 0,
+ EAlfAnchorOriginHCenter, EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( 0.47, 0.3));
+
+ iPopUpAnchor->SetAnchor(EAlfAnchorTopLeft, 1,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( 0.28, 0.4 ));
+ iPopUpAnchor->SetAnchor(EAlfAnchorBottomRight, 1,
+ EAlfAnchorOriginHCenter, EAlfAnchorOriginBottom,
+ EAlfAnchorMetricRelativeToSize, EAlfAnchorMetricRelativeToSize,
+ TAlfTimedPoint( 0.22, -0.16 ) );
+
+ iPopUpLayout->SetOpacity( 0.0 );
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::DisplaySatelliteSignalStrength
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::DisplaySatelliteSignalStrength( TInt aSatCount )
+ {
+ TFileName imagepathname;
+ imagepathname.Zero();
+ iImageVisual->SetImage(TAlfImage(*iSignalTextures[aSatCount]));
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::LaunchInfoQueryDlgL
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::LaunchInfoQueryDlgL()
+ {
+ CAknNoteDialog* dlg;
+ dlg = new (ELeave) CAknNoteDialog(CAknNoteDialog::EConfirmationTone,CAknNoteDialog::ENoTimeout);
+ TInt result = dlg->ExecuteLD( R_INFO_POPUP_MSG_QUERY );
+ if( result == EAknSoftkeyExit )
+ {
+ iView.ExitMainApplicationL( EEikCmdExit );
+ }
+ dlg = NULL;
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::HasTripStarted
+// ---------------------------------------------------------
+//
+TBool CHtkTripMeterControl::HasTripStarted()
+ {
+ return iLocation->HasTripStarted();
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::WasGPSDataLost
+// ---------------------------------------------------------
+//
+TBool CHtkTripMeterControl::WasGPSDataLost(void)
+ {
+ return iLocation->WasGPSDataLost();
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::SetGPSDataAvailability
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::SetGPSDataAvailability(TBool aAvailability)
+ {
+ iLocation->SetGPSDataAvailability(aAvailability);
+ }
+
+// ---------------------------------------------------------
+// CHtkTripMeterControl::ProcessCommandL
+// ---------------------------------------------------------
+//
+void CHtkTripMeterControl::ProcessCommandL(TInt aCommand)
+ {
+ ReChangeTripFocus();
+ switch(aCommand)
+ {
+ case EBlidCmdTripStart:
+ {
+ /**
+ * Start the calculations for the current trip
+ */
+ iLocation->SetTripStartL();
+ break;
+ }
+ case EBlidCmdTripStop:
+ {
+ /**
+ * Stop the calculations for the current trip
+ */
+ iLocation->SetTripStop();
+ break;
+ }
+ case EBlidCmdTripResume:
+ {
+ /**
+ * Resume the calculations for the current trip after stopping
+ */
+ iLocation->SetTripResumeL();
+ break;
+ }
+ case EBlidCmdTripReset:
+ {
+ /**
+ * Reset the items only for the current trip
+ */
+ iLocation->ResetTrip();
+ break;
+ }
+ case EBlidCmdTripClear:
+ {
+ /**
+ * Reset all the items in the trip when it is stopped
+ */
+ RotateSpeedDialL( iPrevAngle, 30 );
+ iLocation->SetTripClear();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ UpdateL();
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::CreateNaviPaneL
+// ----------------------------------------------------
+//
+void CHtkTripMeterControl::CreateNaviPaneL( TBool aDefaultNaviPane )
+ {
+ CEikStatusPane* sp = StatusPane();
+ // Fetch pointer to the default navi pane control
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(sp->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi)));
+
+ if( iDecoratedTabGroup )
+ {
+ delete iDecoratedTabGroup;
+ iDecoratedTabGroup = NULL;
+ }
+
+ if ( aDefaultNaviPane ) // dummy tab
+ {
+ naviPane->PushDefaultL(EFalse);
+ }
+ else
+ {
+ iDecoratedTabGroup = naviPane->CreateTabGroupL();
+ iDecoratedTabGroup->SetControlType( CAknNavigationDecorator::ETabGroup );
+ CAknTabGroup* tabGroup =
+ static_cast< CAknTabGroup* > ( iDecoratedTabGroup->DecoratedControl() );
+ AddTabsL( *tabGroup );
+ }
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::GetNiviDecorator
+// ----------------------------------------------------
+//
+CAknNavigationDecorator* CHtkTripMeterControl::GetNiviDecorator( )
+ {
+ return iDecoratedTabGroup;
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::ActivateTabL
+// ----------------------------------------------------
+//
+void CHtkTripMeterControl::ActivateTabL(
+ CAknNavigationDecorator& aNaviDecorator,
+ TInt aTabId )
+ {
+ CEikStatusPane* sp = StatusPane();
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(
+ sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ aNaviDecorator.DecoratedControl() );
+ tabGroup->SetActiveTabById( aTabId );
+ naviPane->PushL( aNaviDecorator );
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::StatusPane
+// ----------------------------------------------------
+//
+CEikStatusPane* CHtkTripMeterControl::StatusPane()
+ {
+ return CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::MakeTitleL
+// ----------------------------------------------------
+//
+void CHtkTripMeterControl::MakeTitleL( TInt aResourceText )
+ {
+ HBufC* buf = StringLoader::LoadLC(aResourceText);
+ CAknTitlePane* title = static_cast<CAknTitlePane*>( StatusPane()->
+ ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ CleanupStack::Pop(); //buf
+ title->SetText(buf); // Takes ownership of buf
+ }
+
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::AddTabsL
+// ----------------------------------------------------
+//
+void CHtkTripMeterControl::AddTabsL(CAknTabGroup& aTabGroup)
+ {
+ aTabGroup.SetTabFixedWidthL(EAknTabWidthWithTwoTabs);
+
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ HBufC* filename = BlidUtils::GetBitmapFilenameLC();
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* bitmapMask = NULL;
+
+ //Add tab icon 1
+ AknsUtils::CreateIconLC( skin,
+ KAknsIIDQgnPropBlidNavigationTab3,
+ bitmap,
+ bitmapMask,
+ *filename,
+ EMbmBlidQgn_prop_blid_navigation_tab3,
+ EMbmBlidQgn_prop_blid_navigation_tab3_mask );
+ aTabGroup.AddTabL( EBlidNavigationView, bitmap, bitmapMask );
+ CleanupStack::Pop(2); //bitmap, bitmapmask
+
+ //Add tab icon 2
+ AknsUtils::CreateIconLC( skin,
+ KAknsIIDQgnPropBlidTripTab3,
+ bitmap,
+ bitmapMask,
+ *filename,
+ EMbmBlidQgn_prop_blid_trip_tab3,
+ EMbmBlidQgn_prop_blid_trip_tab3_mask );
+ aTabGroup.AddTabL( EBlidTripMeterView, bitmap, bitmapMask );
+ CleanupStack::Pop(2); //bitmap, bitmapmask
+
+
+
+ CleanupStack::PopAndDestroy(); //filename
+ }
+
+// ----------------------------------------------------
+// CHtkTripMeterControl::OfferEventL
+// ----------------------------------------------------
+//
+TBool CHtkTripMeterControl::OfferEventL(const TAlfEvent& aEvent)
+ {
+ if(aEvent.IsKeyEvent() && aEvent.Code() == EEventKey)
+ {
+ CEikStatusPane* sp = StatusPane();
+ // Fetch pointer to the default navi pane control
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(sp->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi)));
+ CAknNavigationDecorator* naviDecorator = naviPane->Top();
+
+ // Check if navigation pane controls exists, because decorator does
+ // not exist in every cases. E.g. after contact fetch in "new rule"
+ // command operation naviDecorator is null.
+ if ( naviDecorator && naviDecorator->ControlType() ==
+ CAknNavigationDecorator::ETabGroup )
+ {
+ if ( naviDecorator->DecoratedControl()->OfferKeyEventL(
+ aEvent.KeyEvent(), aEvent.Code() ) == EKeyWasConsumed )
+ {
+ CAknTabGroup* tabGroup = static_cast< CAknTabGroup* > ( naviDecorator->DecoratedControl() );
+ TInt tabIndex = tabGroup->ActiveTabIndex();
+ iView.ActivateCorrectViewL( tabIndex );
+ return ETrue;
+ }
+ }
+ }
+ else if( aEvent.IsPointerEvent() )
+ {
+ if ( aEvent.PointerDown() )
+ {
+ iIsDownPressed = ETrue;
+ return ETrue;
+ }
+ if ( aEvent.PointerUp() && iIsDownPressed )
+ {
+ if( iLocation->IsGPSDataAvailable() )
+ {
+ iView.LaunchTripContextMenuL();
+ return ETrue;
+ }
+ else
+ {
+ if( aEvent.Visual() == iPopUpAnchor ||
+ aEvent.Visual() == iPopUpMsg ||
+ aEvent.Visual() == iPopImage )
+ {
+ if( isSatelliteInfoLaunch )
+ {
+ iView.LaunchSatelliteInfoDlgL();
+ return ETrue;
+ }
+ else
+ {
+ LaunchInfoQueryDlgL();
+ return ETrue;
+ }
+ }
+ }
+ return EFalse;
+ }
+ }
+ return EFalse;
+ }
+
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::RotateSpeedDialL()
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::RotateSpeedDialL( int aThetaPrevious, int aThetaFinal )
+ {
+ iTripDialVisual->EnableTransformationL(ETrue);
+ CAlfTransformation& aXf = iTripDialVisual->Transformation();
+ aXf.LoadIdentity();
+ TAlfTimedValue angle;
+ angle.SetValueNow( aThetaPrevious );
+ angle.SetTarget( aThetaFinal, 8000 );
+ aXf.Rotate(angle);
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SetTRipMeterValueL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SetTRipMeterValueL( )
+ {
+ // set the tripmeter distance
+ TBuf<128> tripmeterString;
+ TripmeterFormatL( tripmeterString );
+ iTripMeter->SetTextL( *iTripDistance );
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SetOdoMeterValueL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SetOdoMeterValueL( )
+ {
+ // set the odometer distance
+ TBuf<128> odometerString;
+ OdometerFormat( odometerString );
+ iOdoMeter->SetTextL( *iOdometerDistance );
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SetTripTimeL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SetTripTimeL( )
+ {
+ // set the odometer distance
+ TBuf<128> odometerString;
+ TotalTimeFormat( odometerString );
+ iTriptime->SetTextL( odometerString );
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SetTripSpeed
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SetTripSpeed( )
+ {
+ // Nothing to do now
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::FormatOdometerDistance
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::FormatOdometerDistance( TReal aLastodometerValue )
+ {
+ TInt result(0);
+ if ( BlidUtils::TRealToTInt(aLastodometerValue, result) != KErrNone )
+ {
+ iOdometerDistance->Des().Copy( *iDataBlank );
+ return;
+ }
+ aLastodometerValue = result;
+ TReal temp;
+
+ // metric or imperial
+ if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+ {
+
+ if ( aLastodometerValue >= KKilometerToMeters )
+ {
+ TReal distanceInKm = aLastodometerValue / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceInKm) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ if ( BlidUtils::TRealToTInt(aLastodometerValue, result) != KErrNone )
+ {
+ iOdometerDistance->Des().Copy( *iDataBlank );
+ }
+ else
+ {
+ Math::Mod(temp, result, 10);
+ if( temp >= 5 )
+ {
+ result += (10 - temp);
+ }
+ else
+ {
+ result -= temp;
+ }
+
+ if ( result >= KKilometerToMeters )
+ {
+ aLastodometerValue = result;
+ TReal distanceInKm = aLastodometerValue / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceInKm) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ iOdometerDistance->Des().Zero();
+ iOdometerDistance->Des().AppendNum( result );
+ }
+ }
+ }
+ }
+ else
+ {
+ TReal32 distanceImperial = aLastodometerValue*KMetreToFoot;
+
+ if ( distanceImperial >= KMileToFeets )
+ {
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> tempstring;
+ tempstring.Format( KDistanceFormat, Abs(distanceImperial) );
+ iOdometerDistance->Des().Copy( tempstring );
+ }
+ else
+ {
+ if ( BlidUtils::TRealToTInt(
+ distanceImperial, result) != KErrNone )
+ {
+ iOdometerDistance->Des().Copy( *iDataBlank );
+ }
+ else
+ {
+ Math::Mod(temp, result, 10);
+ if( temp >= 5 )
+ {
+ result += (10 - temp);
+ }
+ else
+ {
+ result -= temp;
+ }
+
+ if ( result >= KMileToFeets )
+ {
+ distanceImperial = result;
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceImperial) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ iOdometerDistance->Des().Zero();
+ iOdometerDistance->Des().AppendNum( result );
+ }
+ }
+ }
+ }
+
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::OdometerFormat
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::OdometerFormat( TDes& aOdometerString )
+ {
+ aOdometerString.Zero();
+
+ if ( iLocation->IsTotalDistanceTravelled() &&
+ iLocation->IsGPSDataAvailable() )
+ {
+ TReal32 totalDistance;
+ iLocation->GetTotalDistance( totalDistance );
+ totalDistance = totalDistance + iLastodometerValue;
+ iOdoValueToStore = totalDistance;
+ TInt result(0);
+ if ( BlidUtils::TRealToTInt(totalDistance, result) != KErrNone )
+ {
+ aOdometerString = *iDataBlank;
+ iOdometerDistance->Des().Copy( aOdometerString );
+ return;
+ }
+ totalDistance = result;
+ TReal temp;
+
+ // metric or imperial
+ if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+ {
+
+ if ( totalDistance >= KKilometerToMeters )
+ {
+ TReal distanceInKm = totalDistance / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceInKm) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ if ( BlidUtils::TRealToTInt(totalDistance, result) != KErrNone )
+ {
+ aOdometerString = *iDataBlank;
+ iOdometerDistance->Des().Copy( aOdometerString );
+ }
+ else
+ {
+ Math::Mod(temp, result, 10);
+ if( temp >= 5 )
+ {
+ result += (10 - temp);
+ }
+ else
+ {
+ result -= temp;
+ }
+
+ if ( result >= KKilometerToMeters )
+ {
+ totalDistance = result;
+ TReal distanceInKm = totalDistance / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceInKm) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ iOdometerDistance->Des().Zero();
+ iOdometerDistance->Des().AppendNum( result );
+ }
+ }
+ }
+ }
+ else
+ {
+ TReal32 distanceImperial = totalDistance*KMetreToFoot;
+
+ if ( distanceImperial >= KMileToFeets )
+ {
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> tempstring;
+ tempstring.Format( KDistanceFormat, Abs(distanceImperial) );
+ iOdometerDistance->Des().Copy( tempstring );
+ }
+ else
+ {
+ if ( BlidUtils::TRealToTInt(
+ distanceImperial, result) != KErrNone )
+ {
+ aOdometerString = *iDataBlank;
+ iOdometerDistance->Des().Copy( aOdometerString );
+ }
+ else
+ {
+ Math::Mod(temp, result, 10);
+ if( temp >= 5 )
+ {
+ result += (10 - temp);
+ }
+ else
+ {
+ result -= temp;
+ }
+
+ if ( result >= KMileToFeets )
+ {
+ distanceImperial = result;
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceImperial) );
+ iOdometerDistance->Des().Copy( temp );
+ }
+ else
+ {
+ iOdometerDistance->Des().Zero();
+ iOdometerDistance->Des().AppendNum( result );
+ }
+ }
+ }
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::TotalTimeFormat
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::TotalTimeFormat( TDes& aTotalTimeString )
+ {
+ TInt error(0);
+ TTimeIntervalSeconds timeInterval;
+ TTime totaltime;
+ iLocation->GetTotalTime(timeInterval);
+ TBuf<KBlidLBItemMaxLen> totaltimeString;
+ if ( BlidUtils::FormatTimeToString( totaltimeString, (TReal)(timeInterval.Int()))
+ != KErrNone )
+ {
+ return;
+ }
+ totaltime.Set( totaltimeString );
+ TRAP( error, totaltime.FormatL(
+ aTotalTimeString , *iDurationFormatLong ));
+
+ if(error!=KErrNone)
+ {
+ CEikonEnv::Static()->HandleError( error );
+ aTotalTimeString .Zero();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::TripmeterFormatL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::TripmeterFormatL( TDes& aTripmeterString )
+ {
+ aTripmeterString.Zero();
+ TInt result(0);
+ TReal temp;
+
+ if ( iLocation->IsTripDistanceTravelled() &&
+ iLocation->IsGPSDataAvailable() )
+ {
+ TReal32 distanceTravelled;
+ iLocation->GetTripDistance(distanceTravelled);
+ // metric or imperial
+ if ( iSettingsModel->UnitOfMeasurement() == EUnitsMetric )
+ {
+ iSpeedFormatVisual->SetTextL( *iSpeedFormatKmph );
+ if ( BlidUtils::TRealToTInt(distanceTravelled, result) != KErrNone )
+ {
+ aTripmeterString = *iDataBlank;
+ iTripDistance->Des().Copy( aTripmeterString );
+ }
+ else
+ {
+ distanceTravelled = result;
+
+ if ( distanceTravelled >= KKilometerToMeters )
+ {
+ TReal distanceInKm = distanceTravelled / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> tempstring;
+ tempstring.Format( KDistanceFormat, Abs(distanceInKm) );
+ iTripDistance->Des().Copy( tempstring );
+ }
+ else
+ {
+ Math::Mod(temp, distanceTravelled, 10);
+ if( temp >= 5 )
+ {
+ distanceTravelled += (10 - temp);
+ }
+ else
+ {
+ distanceTravelled -= temp;
+ }
+
+ if(distanceTravelled >= KKilometerToMeters )
+ {
+ TReal distanceInKm = distanceTravelled / KKilometerToMeters;
+ Math::Round(temp, distanceInKm, 1);
+ distanceInKm = temp;
+ TBuf<KBlidLBItemMaxLen> tempstring;
+ tempstring.Format( KDistanceFormat, Abs(distanceInKm) );
+ iTripDistance->Des().Copy( tempstring );
+ }
+ else
+ {
+ iTripDistance->Des().Zero();
+ iTripDistance->Des().AppendNum( distanceTravelled );
+ }
+ }
+ }
+ }
+ else
+ {
+ iSpeedFormatVisual->SetTextL( *iSpeedFormatMph );
+ TReal32 distanceImperial = distanceTravelled*KMetreToFoot;
+
+ if ( distanceImperial >= KMileToFeets )
+ {
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceImperial) );
+ iTripDistance->Des().Copy( temp );
+ }
+ else
+ {
+ if ( BlidUtils::TRealToTInt(
+ distanceImperial, result) != KErrNone )
+ {
+ aTripmeterString = *iDataBlank;
+ iTripDistance->Des().Copy( aTripmeterString );
+ }
+ else
+ {
+ Math::Mod(temp, distanceImperial, 10);
+ if( temp >= 5 )
+ {
+ distanceImperial += (10 - temp);
+ }
+ else
+ {
+ distanceImperial -= temp;
+ }
+
+ if ( distanceImperial >= KMileToFeets )
+ {
+ distanceImperial /= KMileToFeets;
+ Math::Round(temp, distanceImperial, 1);
+ distanceImperial = temp;
+ TBuf<KBlidLBItemMaxLen> temp;
+ temp.Format( KDistanceFormat, Abs(distanceImperial) );
+ iTripDistance->Des().Copy( temp );
+ }
+ else
+ {
+ iTripDistance->Des().Zero();
+ iTripDistance->Des().AppendNum( distanceImperial );
+ }
+ }
+ }
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SaveOdometerValue
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SaveOdometerValue( )
+ {
+ if( iRepository )
+ {
+ iRepository->Set(KBlidOdometerSettingsValue, iOdoValueToStore);
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::ResetOdometerDistanceL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::ResetOdometerDistanceL( )
+ {
+ if( iOdometerDistance )
+ {
+ iOdometerDistance->Des().Zero();
+ iOdometerDistance->Des().AppendNum( 0 );
+ iOdoMeter->SetTextL( *iOdometerDistance );
+ }
+ iLocation->ResetOdometerValue();
+ iOdoValueToStore = 0.0;
+ iLastodometerValue = 0.0;
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SaveOdometerValue
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::ChangeTripFocus( TBool aSTripDimmed )
+ {
+ iSTripDimmed = aSTripDimmed;
+ if( iTripLayout )
+ {
+ TAlfTimedValue opecity;
+ opecity.SetTarget( 0.3, 0 );
+ iTripLayout->SetOpacity( opecity );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SaveOdometerValue
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::ReChangeTripFocus( )
+ {
+ iSTripDimmed = EFalse;
+ if( iTripLayout )
+ {
+ TAlfTimedValue opecity;
+ opecity.SetTarget( 1.0, 0 );
+ iTripLayout->SetOpacity( opecity );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::UpdateLayoutL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::UpdateLayoutL( )
+ {
+ // Call all the root label setanchor and adjust the new LAyout rectangle.
+ CalculateRects();
+ SetAnchors();
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::UpdateLayoutL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::CalculateRects( )
+ {
+ TAknLayoutRect mainPane;
+ TAknLayoutRect mainBlid2Pane;
+ TAknLayoutRect layoutWindow;
+ TAknLayoutText textLayout;
+ TRect mainRect;
+ TRect mainBlidRect;
+ TRect tripMeterRect;
+ TRect valueRect;
+ TInt variety;
+ TInt mainvariety;
+
+ if( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ variety = 1;
+ mainvariety = 4;
+ }
+ else
+ {
+ variety = 0;
+ mainvariety = 0;
+ }
+ //
+ mainPane.LayoutRect( iView.ApplicationRect(),
+ AknLayoutScalable_Apps::main_pane(mainvariety).LayoutLine() );
+
+ mainRect = mainPane.Rect();
+
+ mainBlid2Pane.LayoutRect( mainRect,
+ AknLayoutScalable_Apps::main_blid2_pane().LayoutLine() );
+
+ mainBlidRect = mainBlid2Pane.Rect();
+
+ layoutWindow.LayoutRect( mainBlidRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane( 0 ).LayoutLine() );
+
+ tripMeterRect = layoutWindow.Rect();
+ // Since the Hitchcock does draw at main pane, we take the reference to
+ // Tripmeter(main) pane's.
+ tripMeterRect.Move(tripMeterRect.iTl.iX,-tripMeterRect.iTl.iY);
+
+ // Bg rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g1( variety ).LayoutLine() );
+
+ iBigTripRect = layoutWindow.Rect();
+
+ // Trip dial rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g2( variety ).LayoutLine() );
+
+ iTripDialRect = layoutWindow.Rect();
+
+ // Since the LAF Rect for Dial is 90 degree wrt image, we calculate the rect for 90 degree rotation
+ TAlfRealPoint topPoint = iTripDialRect.iTl;
+ TAlfRealPoint bottomPoint = iTripDialRect.iBr;
+ TReal32 topX = topPoint.iX;
+ TReal32 topY = topPoint.iY;
+ TReal32 bottomX = bottomPoint.iX;
+ TReal32 bottomY = bottomPoint.iY;
+ TReal32 wt = bottomX - topX;
+ TReal32 ht = bottomY - topY;
+
+ TReal32 tX = topX+(wt/2)-(ht/2);
+ TReal32 tY = topY+(ht/2)-(wt/2);
+ TReal32 bX = topX+(wt/2)+(ht/2);
+ TReal32 bY = topY+(ht/2)+(wt/2);
+
+ iTripDialRect.SetRect( tX, tY, bX, bY );
+
+ // Trip deck image rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g3( variety ).LayoutLine() );
+
+ iTripDeckRect = layoutWindow.Rect();
+
+ // Odo meter image rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g4( variety ).LayoutLine() );
+
+ iOdoDeckRect = layoutWindow.Rect();
+
+ // Trip meter text rect
+ textLayout.LayoutText( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_t1( variety ).LayoutLine() );
+
+ iTripMeterRect = textLayout.TextRect();
+
+ // Odo meter text rect
+ textLayout.LayoutText( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_t2( variety ).LayoutLine() );
+
+ iOdoMeterRect = textLayout.TextRect();
+
+ // Time text rect
+ textLayout.LayoutText( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_t3( variety ).LayoutLine() );
+
+ iTripTimeRect = textLayout.TextRect();
+
+ // Speed Format text rect
+ textLayout.LayoutText( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_t3( variety ).LayoutLine() );
+
+ iSpeedFormatRect = textLayout.TextRect();
+ // since we donot have the LAF for Speed Format, we calculate it based on Dial Layout
+ iSpeedFormatRect.SetRect( topX, topY+ht/4, bottomX, topY+ht/3 );
+
+ // Clock image rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g5( variety ).LayoutLine() );
+
+ iClockImageRect = layoutWindow.Rect();
+
+ // Speeds Value rect
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane( variety ).LayoutLine() );
+
+ valueRect = layoutWindow.Rect();
+
+ // Speed Value 1 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t1( 0 ).LayoutLine() );
+
+ iValueRect1 = textLayout.TextRect();
+
+ // Speed Value 2 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t2( 0 ).LayoutLine() );
+
+ iValueRect2 = textLayout.TextRect();
+
+ // Speed Value 3 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t3( 0 ).LayoutLine() );
+
+ iValueRect3 = textLayout.TextRect();
+
+ // Speed Value 4 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t4( 0 ).LayoutLine() );
+
+ iValueRect4 = textLayout.TextRect();
+
+ // Speed Value 5 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t5( 0 ).LayoutLine() );
+
+ iValueRect5 = textLayout.TextRect();
+
+ // Speed Value 6 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t6( 0 ).LayoutLine() );
+
+ iValueRect6 = textLayout.TextRect();
+
+ // Speed Value 7 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t7( 0 ).LayoutLine() );
+
+ iValueRect7 = textLayout.TextRect();
+
+ // Speed Value 8 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t8( 0 ).LayoutLine() );
+
+ iValueRect8 = textLayout.TextRect();
+
+ // Speed Value 9 rect
+ textLayout.LayoutText( valueRect,
+ AknLayoutScalable_Apps::blid2_tripm_values_pane_t9( 0 ).LayoutLine() );
+
+ iValueRect9 = textLayout.TextRect();
+
+ // Signal Strength
+ layoutWindow.LayoutRect( tripMeterRect,
+ AknLayoutScalable_Apps::blid2_tripm_pane_g6( variety ).LayoutLine() );
+
+ iSignalStrengthRect = layoutWindow.Rect();
+
+
+ }
+
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::SetAnchors
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::SetAnchors( )
+ {
+ // Anchor for Big trip visual
+ TAlfRealPoint topPoint( iBigTripRect.iTl );
+ TAlfRealPoint bottomPoint( iBigTripRect.iBr );
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 0,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 0,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for trip box image visual
+ topPoint = iTripDeckRect.iTl;
+ bottomPoint = iTripDeckRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 1,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 1,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for tripmeter text visual
+ topPoint = iTripMeterRect.iTl;
+ bottomPoint = iTripMeterRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 2,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 2,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for odometer box image visual
+ topPoint = iOdoDeckRect.iTl;
+ bottomPoint = iOdoDeckRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 3,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 3,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for odometer text visual
+ topPoint = iOdoMeterRect.iTl;
+ bottomPoint = iOdoMeterRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 4,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 4,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Speed Format visual
+ topPoint = iSpeedFormatRect.iTl;
+ bottomPoint = iSpeedFormatRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 5,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 5,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Speed format
+ topPoint = iTripDialRect.iTl;
+ bottomPoint = iTripDialRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 6,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 6,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for clock image visual
+ topPoint = iClockImageRect.iTl;
+ bottomPoint = iClockImageRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 7,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 7,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for trip time text visual
+ topPoint = iTripTimeRect.iTl;
+ bottomPoint = iTripTimeRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 8,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 8,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchors for iMileVisuals (8 to 16)
+
+ // Anchor for Mile Value 1
+ topPoint = iValueRect1.iTl;
+ bottomPoint = iValueRect1.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 9,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 9,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 2
+ topPoint = iValueRect2.iTl;
+ bottomPoint = iValueRect2.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 10,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 10,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 3
+ topPoint = iValueRect3.iTl;
+ bottomPoint = iValueRect3.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 11,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 11,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 4
+ topPoint = iValueRect4.iTl;
+ bottomPoint = iValueRect4.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 12,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 12,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 5
+ topPoint = iValueRect5.iTl;
+ bottomPoint = iValueRect5.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 13,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 13,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 6
+ topPoint = iValueRect6.iTl;
+ bottomPoint = iValueRect6.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 14,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 14,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 7
+ topPoint = iValueRect7.iTl;
+ bottomPoint = iValueRect7.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 15,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 15,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 8
+ topPoint = iValueRect8.iTl;
+ bottomPoint = iValueRect8.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 16,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 16,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Mile Value 9
+ topPoint = iValueRect9.iTl;
+ bottomPoint = iValueRect9.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 17,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 17,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ // Anchor for Satellite Status image visual (18)
+ topPoint = iSignalStrengthRect.iTl;
+ bottomPoint = iSignalStrengthRect.iBr;
+
+ iTripLayout->SetAnchor( EAlfAnchorTopLeft, 18,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( topPoint.iX, topPoint.iY ) );
+ iTripLayout->SetAnchor( EAlfAnchorBottomRight, 18,
+ EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
+ EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
+ TAlfTimedPoint( bottomPoint.iX, bottomPoint.iY ) );
+
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::CreateSignalTexturesL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::CreateSignalTexturesL( )
+ {
+ MAlfBitmapProvider* provider = NULL;
+
+ // then create the bitmap provider
+ iView.ImageLoaderUtils()->SetSize( iSignalStrengthRect.Size() );
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSatSignal01, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_sat_signal_01, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_sat_signal_01_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture1 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+ iSignalTextures.Append( &thumbTexture1 );// At 0
+
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSatSignal02, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_sat_signal_02, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_sat_signal_02_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture2 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iSignalTextures.Append( &thumbTexture2 );// At 1
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSatSignal03, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_sat_signal_03, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_sat_signal_03_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture3 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iSignalTextures.Append( &thumbTexture3 );// At 2
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSatSignal04, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_sat_signal_04, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_sat_signal_04_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture4 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iSignalTextures.Append( &thumbTexture4 );// At 3
+
+ // then create the bitmap provider
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidSatSignal05, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_sat_signal_05, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_sat_signal_05_mask ); // bitmap mask id defiened in mbg file
+
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture5 = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iSignalTextures.Append( &thumbTexture5 );// At 4
+ }
+
+// ----------------------------------------------------------------------------
+// CHtkTripMeterControl::CreatePopupImgTextureL
+// ----------------------------------------------------------------------------
+//
+void CHtkTripMeterControl::CreatePopupImgTextureL( )
+ {
+ MAlfBitmapProvider* provider = NULL;
+ provider = iView.ImageLoaderUtils()->CreateImageLoaderL( KAknsIIDQgnGrafBlidUnavail, // svg icon skin constant id defiened in Aknsconstant.h file
+ iView.ImagePathName(), // mif file name with path.
+ EMbmBlidQgn_graf_blid_unavail, // bitmap id defiened in mbg file
+ EMbmBlidQgn_graf_blid_unavail_mask ); // bitmap mask id defiened in mbg file
+
+ // now using that bitmap provider create the texture.
+ CAlfTexture & thumbTexture = iEnv.TextureManager().CreateTextureL( KAlfAutoGeneratedTextureId,
+ provider,
+ EAlfTextureFlagDefault );
+
+ iPopupImgTexture = &thumbTexture;
+ }
+
+//End Of File
+