diff -r 8173571d354e -r 1fc85118c3ae basiclocationinfodisplay/blid/engine/src/CBlidEng.cpp --- a/basiclocationinfodisplay/blid/engine/src/CBlidEng.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,365 +0,0 @@ -/* -* Copyright (c) 2005 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: -* Implements interface for Blid event -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include - -#include "CBlidEng.h" -#include "BlidModelFactory.h" -#include "DllMain.h" // panic codes -#include "MBlidSettings.h" // MBlidSettings -#include "MBlidLocation.h" //MBlidLocation -#include "MBlidRouter.h" //MBlidRouter -#include "lbsposition.h" -#include "TNamedCoordinate.h" -#include "blidengconsts.h" - -// ============================ MEMBER FUNCTIONS ============================== -// ---------------------------------------------------------------------------- -// CBlidEng::NewL -// Two-phased constructor. -// ---------------------------------------------------------------------------- -// -EXPORT_C CBlidEng* CBlidEng::NewL() - { - CBlidEng* self = new( ELeave ) CBlidEng; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(self); // self - return self; - } - -// --------------------------------------------------------- -// CBlidEng::ConstructL -// --------------------------------------------------------- -// -void CBlidEng::ConstructL() - { - User::LeaveIfError(iServer.Connect()); - CreateModelL( EBlidSettings ); - CreateModelL( EBlidRouter ); - iAppMode = EAppForeground; - iHWRMLight = CHWRMLight::NewL(); - } - -// ---------------------------------------------------------------------------- -// CBlidEng::CBlidEng -// C++ default constructor can NOT contain any code, that -// might leave. -// ---------------------------------------------------------------------------- -// -CBlidEng::CBlidEng() - { - } - -// --------------------------------------------------------- -// CBlidEng::~CBlidEng -// --------------------------------------------------------- -// -CBlidEng::~CBlidEng() - { - delete iSettings; - delete iLocation; - delete iRouter; - delete iHWRMLight; - iServer.Close(); - } - -// --------------------------------------------------------- -// CBlidEng::StoreL -// --------------------------------------------------------- -// -EXPORT_C TStreamId CBlidEng::StoreL( CStreamStore& aStore, - CStreamStore& aRestore ) - { - RFs fs; - User::LeaveIfError(fs.Connect()); - CleanupClosePushL( fs ); - - if ( SysUtil::DiskSpaceBelowCriticalLevelL( &fs, 0, DriveInfo::EDefaultPhoneMemory ) ) - { - const_cast(this)->RestoreL( aRestore, iStreamId ); - User::Leave( KErrDiskFull ); - } - CleanupStack::PopAndDestroy(); // fs - - RStoreWriteStream stream; - iStreamId = stream.CreateLC( aStore ); - ExternalizeL( stream ); - stream.CommitL(); - CleanupStack::PopAndDestroy(); //stream - return iStreamId; - } - -// --------------------------------------------------------- -// CBlidEng::RestoreL -// --------------------------------------------------------- -// -EXPORT_C void CBlidEng::RestoreL( const CStreamStore& aStore, - TStreamId aStreamId ) - { - iStreamId = aStreamId; - RStoreReadStream stream; - stream.OpenLC(aStore,iStreamId); - InternalizeL(stream); - CleanupStack::PopAndDestroy(); //stream - } - -// ---------------------------------------------------------------------------- -// CBlidEng::SettingsModel() -// Settings model getter. -// ---------------------------------------------------------------------------- -// -EXPORT_C MBlidSettings* CBlidEng::SettingsModel() const - { - return iSettings; - } - -// ---------------------------------------------------------------------------- -// CBlidEng::LocationModel() -// Location model getter. -// ---------------------------------------------------------------------------- -// -EXPORT_C MBlidLocation* CBlidEng::LocationModel() const - { - return iLocation; - } - -// ---------------------------------------------------------------------------- -// CBlidEng::RouterModel() -// Router model getter. -// ---------------------------------------------------------------------------- -// -EXPORT_C MBlidRouter* CBlidEng::RouterModel() const - { - return iRouter; - } - -// ---------------------------------------------------------------------------- -// CBlidEng::CreateModelL() -// Creates a given model type. -// ---------------------------------------------------------------------------- -// -EXPORT_C void CBlidEng::CreateModelL( TBlidModelType aModel ) - { - switch( aModel ) - { - case EBlidSettings: - { - if ( !iSettings ) - { - iSettings = BlidModelFactory::SettingsL(); - } - break; - } - case EBlidLocation: - { - if ( !iLocation ) - { - iLocation = BlidModelFactory::LocationL(iServer, *this); - } - break; - } - case EBlidRouter: - { - if ( !iRouter ) - { - iRouter = BlidModelFactory::RouterL(); - } - break; - } - default: - { - // Not supported model type - __ASSERT_DEBUG(EFalse, BlidEngPanic(ELCEModelTypeNotSupported)); - break; - } - } - } - -// --------------------------------------------------------- -// CBlidEng::GetDistanceToDestination -// --------------------------------------------------------- -// -EXPORT_C TInt CBlidEng::GetDistanceToDestination(TReal32& aDistance) - { - if(iRouter->IsAnyPointSet()) - { - TInt retVal; - TPosition& currentPosition = iLocation->GetCurrentPosition(); - if(iRouter->IsWaypointSet()) - { - TNamedCoordinate* destination = iRouter->Waypoint(); - retVal = destination->Distance(currentPosition, aDistance); - } - else - { - CPosLandmark* landmark = iRouter->Landmark(); - TPosition destination; - landmark->GetPosition(destination); - retVal = currentPosition.Distance(destination, aDistance); - } - - return retVal; - } - else - { - return KErrNotFound; - } - } - -// --------------------------------------------------------- -// CBlidEng::HasArrivedToDestination -// --------------------------------------------------------- -// -EXPORT_C TBool CBlidEng::HasArrivedToDestination() - { - if(iRouter->IsAnyPointSet()) - { - TPosition& currentPosition = iLocation->GetCurrentPosition(); - TReal32 distanceToDestination(0); - - if(iRouter->IsWaypointSet()) - { - TNamedCoordinate* destination = iRouter->Waypoint(); - if(destination->Distance(currentPosition, distanceToDestination) != KErrNone) - { - return EFalse; - } - } - else - { - TPosition destination; - CPosLandmark* landmark = iRouter->Landmark(); - landmark->GetPosition(destination); - if(currentPosition.Distance(destination, distanceToDestination) != KErrNone) - { - return EFalse; - } - } - - if(distanceToDestination <= KMinArrivalDist) - { - iSettings->SetArrivedDistance( KMinArrivalDist ); - return ETrue; - } - - TReal tempHorizontalAccuracy = currentPosition.HorizontalAccuracy(); - - if(tempHorizontalAccuracy > KMaxHorAccLimit) - { - tempHorizontalAccuracy = KMaxHorAccLimit; - } - - if(distanceToDestination <= tempHorizontalAccuracy) - { - iSettings->SetArrivedDistance( tempHorizontalAccuracy ); - return ETrue; - } - } - return EFalse; - } -// ---------------------------------------------------------------------------- -// CBlidEng::SetAppMode -// ---------------------------------------------------------------------------- -// -EXPORT_C void CBlidEng::SetAppMode(TAppMode aMode) - { - iAppMode = aMode; - } - -// ---------------------------------------------------------------------------- -// CBlidEng::SetBackLightStateL -// It's allocate the Backlight resource for the client and deallocate also depends -// Upon the choise of backlight option from the settings view -// ---------------------------------------------------------------------------- -// -EXPORT_C void CBlidEng::SetBackLightStateL(TBacklightState aState) - { - if(aState == EBlidBacklightAlwaysOn) - { - TRAPD( error, iHWRMLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, EFalse, EFalse); - iHWRMLight->LightOnL(CHWRMLight::EPrimaryDisplay); ); - if( error != KErrNone ) - { - // do something if necessary. - } - } - else - { - iHWRMLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); - } - } - -// --------------------------------------------------------- -// CBlidEng::ExternalizeL -// --------------------------------------------------------- -// -void CBlidEng::ExternalizeL( RWriteStream& aStream ) const - { - aStream.WriteInt32L( KBlidDocVersion1 ); - iRouter->ExternalizeL( aStream ); - } - -// --------------------------------------------------------- -// CBlidEng::InternalizeL -// --------------------------------------------------------- -// -void CBlidEng::InternalizeL( RReadStream& aStream ) - { - switch( aStream.ReadInt32L() ) - { - case KBlidDocVersion1: - { - InternalizeV1L( aStream ); - break; - } - default: - { - User::Leave( KErrNotSupported ); - break; - } - } - } - -// --------------------------------------------------------- -// CBlidEng::InternalizeLV1 -// --------------------------------------------------------- -// -void CBlidEng::InternalizeV1L( RReadStream& aStream ) - { - if ( iRouter->Count() ) - { - iRouter->ResetAndDestroy(); - } - iRouter->InternalizeV1L( aStream ); - } - -// ---------------------------------------------------------------------------- -// CBlidEng::AppMode -// ---------------------------------------------------------------------------- -// -EXPORT_C CBlidEng::TAppMode CBlidEng::AppMode() - { - return iAppMode; - } -// End of File