diff -r 000000000000 -r 667063e416a2 locationmapnavfw/aiwprovider/src/mngeocodingcmdhandlerbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationmapnavfw/aiwprovider/src/mngeocodingcmdhandlerbase.cpp Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,149 @@ +/* +* Copyright (c) 2005-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: CMnGeocodingCmdHandlerBase class implementation +* +*/ + + +#include +#include + +#include + +#include "mnaiwdebug.h" +#include "mngeocodingcmdhandlerbase.h" + +// ================= LOCAL FUNCTIONS ======================= + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CMnGeocodingCmdHandlerBase::CMnGeocodingCmdHandlerBase( CMnProvider& aProvider ) +: CMnAiwCommandHandlerBase( aProvider ) + { + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CMnGeocodingCmdHandlerBase::~CMnGeocodingCmdHandlerBase() + { + delete iGeocoder; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::SetExitObserverL( + MMnProviderExitCallback& aExitCallback ) + { + iGeocoder->SetExitObserverL( *this ); + CMnAiwCommandHandlerBase::SetExitObserverL( aExitCallback ); + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::ConstructL( TRunMode aRunMode ) + { + CMnAiwCommandHandlerBase::ConstructL(); + + if ( aRunMode == ERunModeChained ) + { + iGeocoder = CMnGeocoder::NewChainedL( Provider() ); + } + else + { + iGeocoder = CMnGeocoder::NewL( Provider() ); + } + + iRunMode = aRunMode; + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::ReadGeocodingOptionsL( + const TAiwGenericParam& aParam, + TMnAiwGeocodingOptionsParam& aGeoOptions ) + { + TPtrC8 data( aParam.Value().AsData() ); + if ( data.Size() == sizeof( TMnAiwGeocodingOptionsParam ) ) + { + TMnAiwGeocodingOptionsParam options; + TPckg optionsPack( options ); + optionsPack.Copy( data ); + aGeoOptions = options; + } + else + { + User::Leave( KErrArgument ); + } + } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +CMnGeocoder& CMnGeocodingCmdHandlerBase::Geocoder() + { + return *iGeocoder; + } + +// ----------------------------------------------------------------------------- +// From class CMnAiwCommandHandlerBase +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::HandleAiwParamL( const TAiwGenericParam& aParam ) + { + switch ( aParam.SemanticId() ) + { + case EGenericParamMnGeocodingOptions: + //LOG("CMnGeocodingCmdHandlerBase::HandleAiwParam, GeocodingOptions"); + { + TMnAiwGeocodingOptionsParam geoOptions; + ReadGeocodingOptionsL( aParam, geoOptions ); + iGeocoder->SetOptions( ( CMnGeocoder::TOptions ) geoOptions.iOptions ); + break; + } + default: + CMnAiwCommandHandlerBase::HandleAiwParamL( aParam ); + break; + } + } + +// ----------------------------------------------------------------------------- +// From class CMnAiwCommandHandlerBase +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::HandleAiwParamLandmarksL( RArray& aLandmarkDataList ) + { + // if already set or not single landmarks are given + if ( iLandmarkData.Size() || aLandmarkDataList.Count() != 1 ) + { + User::Leave( KErrArgument ); + } + iLandmarkData.Set( aLandmarkDataList[0] ); + } + +// ----------------------------------------------------------------------------- +// From class CMnAiwCommandHandlerBase +// ----------------------------------------------------------------------------- +// +void CMnGeocodingCmdHandlerBase::ResetParametersL() + { + iGeocoder->SetOptions( CMnGeocoder::EOptionNone ); + iLandmarkData.Set( NULL, 0 ); + }