locationmapnavfw/aiwprovider/src/mnaiwcommandhandlerbase.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- a/locationmapnavfw/aiwprovider/src/mnaiwcommandhandlerbase.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,690 +0,0 @@
-/*
-* 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:  CMnAiwCommandHandlerBase class implementation
-*
-*/
-
-
-#include <AiwCommon.h>
-#include <AiwCommon.hrh>
-#include <AiwGenericParam.h>
-#include <AiwGenericParam.hrh>
-
-#include <EPos_Landmarks.h>
-#include <EPos_CPosLandmark.h>
-#include <epos_poslandmarkserialization.h>
-
-#include <aknlistquerydialog.h>
-
-#include <mnprovider.h>
-#include <mnproviderfinder.h>
-#include <mnappservices.hrh>
-
-#include "mnaiwdebug.h"
-#include "mnaiwinternal.h"
-#include "mnaiwservices.h"
-
-#include "mnshowonmaphandler.h"
-#include "mnselectfrommaphandler.h"
-#include "mnnavigatetohandler.h"
-#include "mnfetchaddresshandler.h"
-#include "mnfetchcoordinateshandler.h"
-
-#include "mnaiwcommandhandlerbase.h"
-
-// ================= LOCAL FUNCTIONS =======================
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::CMnAiwCommandHandlerBase( CMnProvider& aProvider )
-:   CActive( CActive::EPriorityStandard ),
-    iProvider( aProvider )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::~CMnAiwCommandHandlerBase()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::AppServiceAndFeatureNeeded(
-    TInt aAiwServiceCommand, 
-    CMnProvider::TService& aServiceNeeded,
-    TInt& aFeaturesNeeded )
-    {
-    switch ( aAiwServiceCommand )
-        {
-        case KAiwCmdMnShowMap:
-            aServiceNeeded = CMnProvider::EServiceMapView;
-            aFeaturesNeeded = KMnSvcFeatureShowMap;
-            break;
-    
-        case KAiwCmdMnSelectFromMap:
-            aServiceNeeded = CMnProvider::EServiceMapView;
-            aFeaturesNeeded = KMnSvcFeatureSelectFromMap;
-            break;
-    
-        case KAiwCmdMnNavigateTo: 
-            aServiceNeeded = CMnProvider::EServiceNavigation;
-            aFeaturesNeeded = KMnSvcFeatureNavigateTo;
-            break;
-    
-        case KAiwCmdMnCoordByAddr: 
-            aServiceNeeded = CMnProvider::EServiceGeocoding;
-            aFeaturesNeeded = KMnSvcFeatureAddrToCoord;
-            break;
-    
-        case KAiwCmdMnAddrByCoord:         
-            aServiceNeeded = CMnProvider::EServiceGeocoding;
-            aFeaturesNeeded = KMnSvcFeatureCoordToAddr;
-            break;
-            
-        default:            
-            aServiceNeeded = CMnProvider::EServiceNone;
-            aFeaturesNeeded = 0;
-            break;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::DefaultRunMode( 
-    TInt aAiwServiceCommand )
-    {
-    switch ( aAiwServiceCommand )
-        {
-        case KAiwCmdMnShowMap:
-            return KShowOnMapChainedByDefault ? ERunModeChained : ERunModeStandalone;
-    
-        case KAiwCmdMnSelectFromMap:
-            return KSelectFromMapChainedByDefault ? ERunModeChained : ERunModeStandalone;
-    
-        case KAiwCmdMnNavigateTo: 
-            return KNavigateToChainedByDefault ? ERunModeChained : ERunModeStandalone;
-    
-        case KAiwCmdMnCoordByAddr: 
-            return KFetchCoordinatesChainedByDefault ? ERunModeChained : ERunModeStandalone;
-    
-        case KAiwCmdMnAddrByCoord:         
-            return KFetchAddressChainedByDefault ? ERunModeChained : ERunModeStandalone;
-            
-        default:            
-            return ERunModeDefault;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase* CMnAiwCommandHandlerBase::CreateHandlerL( 
-    TInt aAiwServiceCommand, 
-    CMnProvider& aProvider,
-    TRunMode aRunMode )
-    {
-    CMnAiwCommandHandlerBase* handler = NULL;
-    switch ( aAiwServiceCommand )
-        {
-        case KAiwCmdMnShowMap:
-            handler = CMnShowOnMapHandler::NewL( aProvider, aRunMode );
-            break;
-
-        case KAiwCmdMnNavigateTo:
-            handler = CMnNavigateToHandler::NewL( aProvider, aRunMode );
-            break;
-
-        case KAiwCmdMnSelectFromMap:
-            handler = CMnSelectFromMapHandler::NewL( aProvider, aRunMode );
-            break;
-
-        case KAiwCmdMnAddrByCoord:
-            handler = CMnFetchAddressHandler::NewL( aProvider, aRunMode );
-            break;
-
-        case KAiwCmdMnCoordByAddr:
-            handler = CMnFetchCoordinatesHandler::NewL( aProvider, aRunMode );
-            break;
-
-        default:
-            User::Leave( KErrNotSupported );
-            break;
-        }
-        
-    return handler;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::SetParametersL( const TAiwParameters& aAiwParameters )
-    {
-    __ASSERT_DEBUG( !IsActive(), Panic( KErrGeneral ) );
-    iAiwParameters = aAiwParameters;
-    ProcessAiwParametersL();
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ResetParametersL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::StartL()
-    {
-    DoStartL();
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::Start( MMnAsyncAiwCmdHandlerCallback& aCallback )
-    {
-    LOG("CMnAiwCommandHandlerBase::Start in");
-    
-    iCallback = &aCallback;
-    __ASSERT_DEBUG( iCallback, Panic( KErrGeneral ) );
-    
-    TInt err = KErrNone;
-    TRAP( err, DoStartL() );
-    if ( err )
-        {
-        Done( err );
-        }
-    else
-        {
-        SetActive();
-        }
-    
-    LOG("CMnAiwCommandHandlerBase::Start out");
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TAiwParameters& CMnAiwCommandHandlerBase::AiwParameters()
-    {
-    return iAiwParameters;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::RunMode()
-	{
-	return iRunMode;
-	}
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::SetExitObserverL( 
-	MMnProviderExitCallback& aExitCallback )
-	{
-	iExitCallback = &aExitCallback;
-	}
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnProvider& CMnAiwCommandHandlerBase::Provider()
-    {
-    return iProvider;
-    }
-
-// ================= INTERNAL FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::Done( TInt aResult )
-    {
-    TRAP_IGNORE( iCallback->HandleAsyncAiwCmdCompletedL( this, aResult ) );
-    } 
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ProcessAiwParametersL()
-    {
-    LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL in");
-
-    RArray<TPtrC8> lmBuffers;
-    CleanupClosePushL( lmBuffers );
-
-    TPtrC dbUri;
-    RArray<TPosLmItemId> lmIds;
-    CleanupClosePushL( lmIds );
-    
-    for ( TInt i = 0; i < AiwParameters().InList().Count(); i++ )
-        {
-        const TAiwGenericParam& param = AiwParameters().InList()[i];
-        switch ( param.SemanticId() )
-            {
-            case EGenericParamMnCommonOptions:
-                //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, CommonOptions");
-                // already handled
-                break;
-                
-            case EGenericParamLandmark:
-                //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, Landmark");
-                {
-                TPtrC8 lmData;
-                ReadLandmarkDataL( param, lmData );
-                lmBuffers.AppendL( lmData );
-                break;
-                }
-            case EGenericParamLandmarkDatabase:
-                //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkDatabase");
-                {
-                if ( dbUri.Length() && lmIds.Count() )
-                    {
-                    HandleAiwParamLandmarksListL( dbUri, lmIds );
-                    dbUri.Set( NULL, 0 );
-                    lmIds.Reset();
-                    }
-                ReadDatabaseUriL( param, dbUri );
-                break;
-                }
-            case EGenericParamLandmarkId:
-                //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkId");
-                {
-                if ( dbUri.Length() )
-                    {
-                    TPosLmItemId lmId = ReadLandmarkId( param );
-                    lmIds.AppendL( lmId );
-                    }
-                else
-                    {
-                    User::Leave( KErrArgument );
-                    }
-                break;
-                }
-            case EGenericParamLandmarkIdList:
-                //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkIdList");
-                {
-                if ( dbUri.Length() )
-                    {
-                    TInt numLmIds = 0;
-                    const TPosLmItemId* lmIdList = NULL;
-                    ReadLandmarkIdListL( param, lmIdList, numLmIds );
-                    for ( TInt i = 0; i < numLmIds; i++ )
-                        {
-                        lmIds.AppendL( *(lmIdList + i) );
-                        }
-                    }
-                else
-                    {
-                    User::Leave( KErrArgument );
-                    }
-                break;
-                }
-            default:
-                HandleAiwParamL( param );                
-            }
-        }
-
-    if ( lmBuffers.Count() )
-        {
-        HandleAiwParamLandmarksL( lmBuffers );
-        }
-        
-    if ( dbUri.Length() && lmIds.Count() )
-        {
-        HandleAiwParamLandmarksListL( dbUri, lmIds );
-        }
-        
-    CleanupStack::PopAndDestroy( &lmIds );
-    CleanupStack::PopAndDestroy( &lmBuffers );
-    LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL out");
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::RequestedRunModeL( 
-    const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams )
-    {
-    TMnAiwCommonOptionsParamExtended commonOptionsExtended;
-
-    if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
-        {
-        if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldRunChained )
-            {
-            return commonOptionsExtended.iRunChained ? ERunModeChained : ERunModeStandalone;
-            }
-        }
-    return ERunModeDefault;
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TBool CMnAiwCommandHandlerBase::IsProviderSpecifiedL( 
-    const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams,
-    TInt& aProviderId )
-    {
-    TMnAiwCommonOptionsParamExtended commonOptionsExtended;
-    if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
-        {
-        if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldProviderId )
-            {
-            aProviderId = commonOptionsExtended.iProviderId;
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TBool CMnAiwCommandHandlerBase::IsErrorMessageDisabledL( 
-    const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams )
-    {
-    TMnAiwCommonOptionsParamExtended commonOptionsExtended;
-    if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
-        {
-        if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldMessagesDisabled )
-            {
-            return commonOptionsExtended.iMessagesDisabled;
-            }
-        }
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TBool CMnAiwCommandHandlerBase::FindCommonOptionsL( 
-    const TAiwParameters& aAiwParams,
-    TMnAiwCommonOptionsParamExtended& aCommonOptions )
-    {
-    TInt indexOptions = 0;
-    aAiwParams.InList().FindFirst( indexOptions, EGenericParamMnCommonOptions, EVariantTypeDesC8 );
-    if ( indexOptions != KErrNotFound )
-        {
-        const TAiwVariant& value = aAiwParams.InList()[indexOptions].Value();
-        TPtrC8 data( value.AsData() ); 
-        if ( data.Size() == sizeof( TMnAiwCommonOptionsParamExtended ) )
-            {
-            TPckg<TMnAiwCommonOptionsParamExtended> optionsPack( aCommonOptions );
-            optionsPack.Copy( data );
-            return ETrue;
-            }
-        else if ( data.Size() == sizeof( TMnAiwCommonOptionsParam ) )
-            {
-            TMnAiwCommonOptionsParam commonOptions;
-            TPckg<TMnAiwCommonOptionsParam> optionsPack( commonOptions );
-            optionsPack.Copy( data );
-            aCommonOptions.iFieldsSet = EMnAiwCommonOptionsFieldRunChained;
-            aCommonOptions.iRunChained = commonOptions.iRunChained;
-            return ETrue;
-            }
-        }
-    return EFalse;        
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ReadLandmarkDataL( const TAiwGenericParam& aParam, TPtrC8& aLandmarkPtr )
-    {
-    aLandmarkPtr.Set( aParam.Value().AsData() );
-    // verify it
-    CPosLandmark* lm = PosLandmarkSerialization::UnpackL( aLandmarkPtr );
-    delete lm;
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TBool CMnAiwCommandHandlerBase::FindLandmarkData( TInt aIndex, TAiwGenericParam& aParam )
-    {
-    TInt found = -1;
-    for ( TInt i = 0; i < AiwParameters().InList().Count(); i++ )
-        {
-        const TAiwGenericParam& param = AiwParameters().InList()[i];
-        if ( param.SemanticId() == EGenericParamLandmark )
-            {
-            found++;
-            }
-        if ( found == aIndex )
-            {
-            aParam = param;
-            return ETrue;
-            }
-        }
-        
-    return EFalse;        
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ReadDatabaseUriL( const TAiwGenericParam& aParam, TPtrC& aDbUri )
-    {
-    aDbUri.Set( aParam.Value().AsDes() );
-    if ( !aDbUri.Length() )
-        {
-        User::Leave( KErrArgument );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-TPosLmItemId CMnAiwCommandHandlerBase::ReadLandmarkId( const TAiwGenericParam& aParam )
-    {
-    return aParam.Value().AsTInt32();
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::ReadLandmarkIdListL( 
-    const TAiwGenericParam& aParam,
-    const TPosLmItemId*& aListPtr,
-    TInt& aListSize )
-    {
-    TPtrC8 data( aParam.Value().AsData() );
-    
-    if ( data.Size() % sizeof( TPosLmItemId ) )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    aListPtr = reinterpret_cast<const TPosLmItemId*>( data.Ptr() );
-    aListSize = data.Size() / sizeof( TPosLmItemId );
-    }        
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::WriteLandmarkL( const CPosLandmark& aLandmark )
-    {
-    HBufC8* lmBuf = PosLandmarkSerialization::PackL( aLandmark );
-    CleanupStack::PushL( lmBuf );
-
-    TAiwGenericParam param( EGenericParamLandmark, TAiwVariant( *lmBuf ) );
-    iAiwParameters.OutList().AppendL( param );
-
-    CleanupStack::PopAndDestroy( lmBuf );
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::WriteLandmarkL( TPosLmItemId aLandmarkId, const TDesC& aDatabaseUri )
-    {
-    TAiwGenericParam lmId( EGenericParamLandmarkId, TAiwVariant( aLandmarkId ) );
-    TAiwGenericParam dbUri( EGenericParamLandmarkDatabase, TAiwVariant( aDatabaseUri ) );
-
-    iAiwParameters.OutList().AppendL( dbUri );
-    iAiwParameters.OutList().AppendL( lmId );
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::HandleAiwParamL( const TAiwGenericParam& /*aParam*/ )
-    {
-    User::Leave( KErrArgument );
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::HandleAiwParamLandmarksL( RArray<TPtrC8>& /*aLandmarkDataList*/ )
-    {
-    User::Leave( KErrArgument );
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::HandleAiwParamLandmarksListL( 
-    const TDesC& /*aDbUri*/, 
-    RArray<TPosLmItemId>& /*aLmIds*/ )
-    {
-    User::Leave( KErrArgument );
-    }
-
-// -----------------------------------------------------------------------------
-//  From class CActive
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::RunL()
-    {
-#ifdef _DEBUG    
-    LOG("CMnAiwCommandHandlerBase::RunL in, panicking");
-    Panic( KErrGeneral );
-#endif    
-    }
-
-// -----------------------------------------------------------------------------
-//  From class CActive
-// -----------------------------------------------------------------------------
-//
-TInt CMnAiwCommandHandlerBase::RunError( TInt aError )
-    {
-    Done( aError );
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-//  From class CActive
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::DoCancel()
-    {
-    Done( KErrCancel );
-    }
-
-// -----------------------------------------------------------------------------
-// From MAknServerAppExitObserver
-// -----------------------------------------------------------------------------
-//
-void CMnAiwCommandHandlerBase::HandleServerAppExit( TInt aReason )
-	{
-    LOG1("CMnAiwCommandHandlerBase::HandleServerAppExit in, reason %d", aReason );
-	
-	if ( iRunMode == ERunModeChained )
-	    {
-	    // for standlone mode this event is ignored,
-	    // otherwise client will be shutdown whenever provider exits
-	    MAknServerAppExitObserver::HandleServerAppExit( aReason );
-	    }
-
-	if ( iExitCallback )
-		{
-		iExitCallback->HandleProviderExit( this );
-		}
-#ifdef _DEBUG
-	else
-		{
-		Panic( KErrGeneral );
-		}
-#endif		
-	    
-    LOG("CMnAiwCommandHandlerBase::HandleServerAppExit out");
-	}
-
-//===================== TAiwParameters ====================
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TAiwParameters::TAiwParameters()
-:   iInParamList( NULL ),    
-    iOutParamList( NULL ),
-    iCallback( NULL )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CMnAiwCommandHandlerBase::TAiwParameters::TAiwParameters(
-    const CAiwGenericParamList& aInParamList,
-    CAiwGenericParamList& aOutParamList,
-    const MAiwNotifyCallback* aCallback )
-:   iInParamList( &aInParamList ),    
-    iOutParamList( &aOutParamList ),
-    iCallback( aCallback )
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-const CAiwGenericParamList& CMnAiwCommandHandlerBase::TAiwParameters::InList() const
-    {
-    return *iInParamList;
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-CAiwGenericParamList& CMnAiwCommandHandlerBase::TAiwParameters::OutList()
-    {
-    return *iOutParamList;
-    }
-    
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
-const MAiwNotifyCallback* CMnAiwCommandHandlerBase::TAiwParameters::Callback() const
-    {
-    return iCallback;
-    }