diff -r 1fc85118c3ae -r 870918037e16 basiclocationinfodisplay/blid/ui/src/CHtkTripMeterControl.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// 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(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( + sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi))); + CAknTabGroup* tabGroup = static_cast( + 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( 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(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 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 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 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 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 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 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 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 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 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 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 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 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 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 +