diff -r 8173571d354e -r 1fc85118c3ae simpsyconfigurator/src/simpsyuiao.cpp --- a/simpsyconfigurator/src/simpsyuiao.cpp Thu Aug 19 09:48:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* -* Copyright (c) 2006 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: Active object interface for obtaining Location updates -* -*/ - - -// System Includes -#include // StringLoader -#include -#include -#include - -// User Includes -#include "simpsyuiao.h" - -// Constant Defintions -const TInt KFormatStringLength = 200; -const TInt KFormatCharacterWidth = 10; -const TInt KPositionDataGranularity = 6; -const TInt KFormatDecimalNumbers = 4; - -_LIT( KTabulator, "\t" ); -_LIT( KSimPsyConfiguratorName, "SimPsyConfigurator"); - -// --------------------------------------------------------------------------- -// Private Constructor -// --------------------------------------------------------------------------- -// -CSimPsyUiAO::CSimPsyUiAO( MSimPsyAOObserver& aObserver ) - :CActive( EPriorityStandard ), - iObserver( aObserver ) - { - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CSimPsyUiAO::~CSimPsyUiAO() - { - Cancel(); - } - -// --------------------------------------------------------------------------- -// CSimPsyUiAO* CSimPsyUiAO::NewL -// Static Two phase contructor that instantiates the CSimPsyUiAO -// -// @param aObserver Observer to the Active object -// @return CSimPsyUiAO* Reference to the object created -// --------------------------------------------------------------------------- -// -CSimPsyUiAO* CSimPsyUiAO::NewL( MSimPsyAOObserver& aObserver ) - { - CSimPsyUiAO* self = new ( ELeave ) CSimPsyUiAO( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::ConstructL -// Second phase of the two phase constructor -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::ConstructL() - { - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::Initialize -// Obtains the current Location information using the Location -// Acquisition API. The function call is asynchronous and the -// notification regarding the completion of the operation is -// provided through the MSimPsyAOObserver object -// -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::GetCurrentLocationL() - { - - // Leave if there is an outstanding Location request - if( IsActive()) - { - User::Leave( KErrInUse ); - } - - TPositionModuleId KUidSimulationPsy = { 0x101f7a81 }; - TBuf buf; - - // Initialize the Location Server session - TInt error = iPositionServer.Connect(); - if ( KErrNone != error ) - { - // Show error to the user and break - HBufC* formatString = StringLoader::LoadL( R_SIMPSYUI_SERV_CONNECT_ERR ); - StringLoader::Format( buf, *formatString,0, error ); - delete formatString; - ShowErrorL(buf); - User::Leave( KErrCouldNotConnect ); - } - - // Get current Location using the SimulationPSY module - error = iPositioner.Open( iPositionServer, KUidSimulationPsy ); - - // The opening of a subsession failed - if ( KErrNone != error ) - { - // Show error to the user and return - iPositionServer.Close(); - HBufC* formatString = StringLoader::LoadL( R_SIMPSYUI_PSY_OPEN_ERR ); - StringLoader::Format( buf, *formatString,0, error ); - delete formatString; - ShowErrorL(buf); - User::Leave( KErrAbort ); - } - - // Set Requestor information - error = iPositioner.SetRequestor( CRequestor::ERequestorService, - CRequestor::EFormatApplication, - KSimPsyConfiguratorName ); - // The requestor could not be set - if ( KErrNone != error ) - { - // Show error to the user and return - iPositioner.Close(); - iPositionServer.Close(); - HBufC* formatString = StringLoader::LoadL( R_SIMPSYUI_SETTING_REQUESTOR_ERR ); - StringLoader::Format( buf, *formatString,0, error ); - delete formatString; - ShowErrorL(buf); - User::Leave( KErrAbort ); - } - - iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::CancelLocationRequest -// Cancels any outstanding Location request -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::CancelLocationRequest() - { - Cancel(); - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::DisplayCurrentLocation -// Displays the current Location -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::DisplayCurrentLocationL() - { - TPosition pos; - iPositionInfo.GetPosition( pos ); - TInt dummy = 0; - HBufC* formatString = NULL; - CAknListQueryDialog* dlg = new( ELeave ) CAknListQueryDialog( &dummy ); - dlg->PrepareLC( R_SIMPSYUI_LOCATION_DIALOG ); - - TReal64 latitude = pos.Latitude(); - TReal64 longitude = pos.Longitude(); - TReal32 altitude = pos.Altitude(); - TReal32 hAccuracy = pos.HorizontalAccuracy(); - TReal32 vAccuracy = pos.VerticalAccuracy(); - - TRealFormat formatter( KFormatCharacterWidth,KFormatDecimalNumbers ); - TBuf buf; - CDesCArrayFlat* locData = - new( ELeave ) CDesCArrayFlat( KPositionDataGranularity ); - CleanupStack::PushL( locData ); - - buf.Zero(); - formatString = StringLoader::LoadL( R_SIMPSYUI_LOCATION_INFO_LATITUDE ); - buf.Copy(*formatString); - delete formatString; - buf.Append( KTabulator ); - buf.AppendNum( latitude, formatter ); - locData->AppendL( buf ); - - buf.Zero(); - formatString = StringLoader::LoadL( R_SIMPSYUI_LOCATION_INFO_LONGITUDE ); - buf.Copy(*formatString); - delete formatString; - buf.Append( KTabulator ); - buf.AppendNum( longitude, formatter ); - locData->AppendL( buf ); - - buf.Zero(); - formatString = StringLoader::LoadL( R_SIMPSYUI_LOCATION_INFO_ALTITUDE ); - buf.Copy(*formatString); - delete formatString; - buf.Append( KTabulator ); - buf.AppendNum( altitude, formatter ); - locData->AppendL( buf ); - - buf.Zero(); - formatString = StringLoader::LoadL( R_SIMPSYUI_LOCATION_INFO_HORZ_ACCURACY ); - buf.Copy(*formatString); - delete formatString; - buf.Append( KTabulator ); - buf.AppendNum( hAccuracy, formatter ); - locData->AppendL( buf ); - - buf.Zero(); - formatString = StringLoader::LoadL( R_SIMPSYUI_LOCATION_INFO_VERT_ACCURACY ); - buf.Copy(*formatString); - delete formatString; - buf.Append( KTabulator ); - buf.AppendNum( vAccuracy, formatter ); - locData->AppendL( buf ); - - CleanupStack::Pop( locData ); - dlg->SetItemTextArray( locData ); - dlg->SetOwnershipType( ELbmOwnsItemArray ); - - dlg->RunLD(); - } - - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::RunL -// Inherited from CActive -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::RunL() - { - switch( iStatus.Int()) - { - case KErrNone: - { - // Close the server sessions - iPositioner.Close(); - iPositionServer.Close(); - iObserver.NotifyLocationRequestCompletedL(); - break; - } - case KErrCancel: - { - // There is no need of closing the sessions incase of Cancel since - // the sessions are closed as a part of DoCancel - break; - } - default: - { - // Close the server sessions - iPositioner.Close(); - iPositionServer.Close(); - TBuf buf; - // Display Error Code and Break - HBufC* formatString = StringLoader::LoadL( R_SIMPSYUI_GET_LOCATION_ERR ); - StringLoader::Format( buf, *formatString,0, iStatus.Int() ); - delete formatString; - ShowErrorL(buf); - break; - } - } - - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::DoCancel -// Inherited from CActive -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::DoCancel() - { - iPositioner.CancelRequest( EPositionerNotifyPositionUpdate ); - // Close the server sessions - iPositioner.Close(); - iPositionServer.Close(); - } - -// --------------------------------------------------------------------------- -// void CSimPsyUiAO::ShowErrorL -// Displays error note -// -// @param aErrorText Error text -// --------------------------------------------------------------------------- -// -void CSimPsyUiAO::ShowErrorL(const TDesC& aErrorText) - { - CAknNoteDialog* note = new( ELeave ) CAknNoteDialog( CAknNoteDialog::EErrorTone, - CAknNoteDialog::ENoTimeout ); - CleanupStack::PushL( note ); - note->SetTextWrapping( ETrue ); - note->PrepareLC( R_SIMPSYUI_ERROR_NOTE ); - note->SetTextL( aErrorText ); - CleanupStack::Pop( note ); - note->RunLD(); - return; - }