locationmapnavfw/aiwprovider/src/mnaiwcommandhandlerbase.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
equal deleted inserted replaced
42:02ba3f1733c6 44:2b4ea9893b66
     1 /*
       
     2 * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  CMnAiwCommandHandlerBase class implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <AiwCommon.h>
       
    20 #include <AiwCommon.hrh>
       
    21 #include <AiwGenericParam.h>
       
    22 #include <AiwGenericParam.hrh>
       
    23 
       
    24 #include <EPos_Landmarks.h>
       
    25 #include <EPos_CPosLandmark.h>
       
    26 #include <epos_poslandmarkserialization.h>
       
    27 
       
    28 #include <aknlistquerydialog.h>
       
    29 
       
    30 #include <mnprovider.h>
       
    31 #include <mnproviderfinder.h>
       
    32 #include <mnappservices.hrh>
       
    33 
       
    34 #include "mnaiwdebug.h"
       
    35 #include "mnaiwinternal.h"
       
    36 #include "mnaiwservices.h"
       
    37 
       
    38 #include "mnshowonmaphandler.h"
       
    39 #include "mnselectfrommaphandler.h"
       
    40 #include "mnnavigatetohandler.h"
       
    41 #include "mnfetchaddresshandler.h"
       
    42 #include "mnfetchcoordinateshandler.h"
       
    43 
       
    44 #include "mnaiwcommandhandlerbase.h"
       
    45 
       
    46 // ================= LOCAL FUNCTIONS =======================
       
    47 
       
    48 // ================= MEMBER FUNCTIONS =======================
       
    49 
       
    50 // -----------------------------------------------------------------------------
       
    51 // -----------------------------------------------------------------------------
       
    52 //
       
    53 CMnAiwCommandHandlerBase::CMnAiwCommandHandlerBase( CMnProvider& aProvider )
       
    54 :   CActive( CActive::EPriorityStandard ),
       
    55     iProvider( aProvider )
       
    56     {
       
    57     CActiveScheduler::Add( this );
       
    58     }
       
    59 
       
    60 // -----------------------------------------------------------------------------
       
    61 // -----------------------------------------------------------------------------
       
    62 //
       
    63 CMnAiwCommandHandlerBase::~CMnAiwCommandHandlerBase()
       
    64     {
       
    65     }
       
    66 
       
    67 // -----------------------------------------------------------------------------
       
    68 // -----------------------------------------------------------------------------
       
    69 //
       
    70 void CMnAiwCommandHandlerBase::ConstructL()
       
    71     {
       
    72     }
       
    73 
       
    74 // -----------------------------------------------------------------------------
       
    75 // -----------------------------------------------------------------------------
       
    76 //
       
    77 void CMnAiwCommandHandlerBase::AppServiceAndFeatureNeeded(
       
    78     TInt aAiwServiceCommand, 
       
    79     CMnProvider::TService& aServiceNeeded,
       
    80     TInt& aFeaturesNeeded )
       
    81     {
       
    82     switch ( aAiwServiceCommand )
       
    83         {
       
    84         case KAiwCmdMnShowMap:
       
    85             aServiceNeeded = CMnProvider::EServiceMapView;
       
    86             aFeaturesNeeded = KMnSvcFeatureShowMap;
       
    87             break;
       
    88     
       
    89         case KAiwCmdMnSelectFromMap:
       
    90             aServiceNeeded = CMnProvider::EServiceMapView;
       
    91             aFeaturesNeeded = KMnSvcFeatureSelectFromMap;
       
    92             break;
       
    93     
       
    94         case KAiwCmdMnNavigateTo: 
       
    95             aServiceNeeded = CMnProvider::EServiceNavigation;
       
    96             aFeaturesNeeded = KMnSvcFeatureNavigateTo;
       
    97             break;
       
    98     
       
    99         case KAiwCmdMnCoordByAddr: 
       
   100             aServiceNeeded = CMnProvider::EServiceGeocoding;
       
   101             aFeaturesNeeded = KMnSvcFeatureAddrToCoord;
       
   102             break;
       
   103     
       
   104         case KAiwCmdMnAddrByCoord:         
       
   105             aServiceNeeded = CMnProvider::EServiceGeocoding;
       
   106             aFeaturesNeeded = KMnSvcFeatureCoordToAddr;
       
   107             break;
       
   108             
       
   109         default:            
       
   110             aServiceNeeded = CMnProvider::EServiceNone;
       
   111             aFeaturesNeeded = 0;
       
   112             break;
       
   113         }
       
   114     }
       
   115 
       
   116 // -----------------------------------------------------------------------------
       
   117 // -----------------------------------------------------------------------------
       
   118 //
       
   119 CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::DefaultRunMode( 
       
   120     TInt aAiwServiceCommand )
       
   121     {
       
   122     switch ( aAiwServiceCommand )
       
   123         {
       
   124         case KAiwCmdMnShowMap:
       
   125             return KShowOnMapChainedByDefault ? ERunModeChained : ERunModeStandalone;
       
   126     
       
   127         case KAiwCmdMnSelectFromMap:
       
   128             return KSelectFromMapChainedByDefault ? ERunModeChained : ERunModeStandalone;
       
   129     
       
   130         case KAiwCmdMnNavigateTo: 
       
   131             return KNavigateToChainedByDefault ? ERunModeChained : ERunModeStandalone;
       
   132     
       
   133         case KAiwCmdMnCoordByAddr: 
       
   134             return KFetchCoordinatesChainedByDefault ? ERunModeChained : ERunModeStandalone;
       
   135     
       
   136         case KAiwCmdMnAddrByCoord:         
       
   137             return KFetchAddressChainedByDefault ? ERunModeChained : ERunModeStandalone;
       
   138             
       
   139         default:            
       
   140             return ERunModeDefault;
       
   141         }
       
   142     }
       
   143 
       
   144 // -----------------------------------------------------------------------------
       
   145 // -----------------------------------------------------------------------------
       
   146 //
       
   147 CMnAiwCommandHandlerBase* CMnAiwCommandHandlerBase::CreateHandlerL( 
       
   148     TInt aAiwServiceCommand, 
       
   149     CMnProvider& aProvider,
       
   150     TRunMode aRunMode )
       
   151     {
       
   152     CMnAiwCommandHandlerBase* handler = NULL;
       
   153     switch ( aAiwServiceCommand )
       
   154         {
       
   155         case KAiwCmdMnShowMap:
       
   156             handler = CMnShowOnMapHandler::NewL( aProvider, aRunMode );
       
   157             break;
       
   158 
       
   159         case KAiwCmdMnNavigateTo:
       
   160             handler = CMnNavigateToHandler::NewL( aProvider, aRunMode );
       
   161             break;
       
   162 
       
   163         case KAiwCmdMnSelectFromMap:
       
   164             handler = CMnSelectFromMapHandler::NewL( aProvider, aRunMode );
       
   165             break;
       
   166 
       
   167         case KAiwCmdMnAddrByCoord:
       
   168             handler = CMnFetchAddressHandler::NewL( aProvider, aRunMode );
       
   169             break;
       
   170 
       
   171         case KAiwCmdMnCoordByAddr:
       
   172             handler = CMnFetchCoordinatesHandler::NewL( aProvider, aRunMode );
       
   173             break;
       
   174 
       
   175         default:
       
   176             User::Leave( KErrNotSupported );
       
   177             break;
       
   178         }
       
   179         
       
   180     return handler;
       
   181     }
       
   182 
       
   183 // -----------------------------------------------------------------------------
       
   184 // -----------------------------------------------------------------------------
       
   185 //
       
   186 void CMnAiwCommandHandlerBase::SetParametersL( const TAiwParameters& aAiwParameters )
       
   187     {
       
   188     __ASSERT_DEBUG( !IsActive(), Panic( KErrGeneral ) );
       
   189     iAiwParameters = aAiwParameters;
       
   190     ProcessAiwParametersL();
       
   191     }
       
   192 
       
   193 // -----------------------------------------------------------------------------
       
   194 // -----------------------------------------------------------------------------
       
   195 //
       
   196 void CMnAiwCommandHandlerBase::ResetParametersL()
       
   197     {
       
   198     }
       
   199 
       
   200 // -----------------------------------------------------------------------------
       
   201 // -----------------------------------------------------------------------------
       
   202 //
       
   203 void CMnAiwCommandHandlerBase::StartL()
       
   204     {
       
   205     DoStartL();
       
   206     }
       
   207 
       
   208 // -----------------------------------------------------------------------------
       
   209 // -----------------------------------------------------------------------------
       
   210 //
       
   211 void CMnAiwCommandHandlerBase::Start( MMnAsyncAiwCmdHandlerCallback& aCallback )
       
   212     {
       
   213     LOG("CMnAiwCommandHandlerBase::Start in");
       
   214     
       
   215     iCallback = &aCallback;
       
   216     __ASSERT_DEBUG( iCallback, Panic( KErrGeneral ) );
       
   217     
       
   218     TInt err = KErrNone;
       
   219     TRAP( err, DoStartL() );
       
   220     if ( err )
       
   221         {
       
   222         Done( err );
       
   223         }
       
   224     else
       
   225         {
       
   226         SetActive();
       
   227         }
       
   228     
       
   229     LOG("CMnAiwCommandHandlerBase::Start out");
       
   230     }
       
   231 
       
   232 // -----------------------------------------------------------------------------
       
   233 // -----------------------------------------------------------------------------
       
   234 //
       
   235 CMnAiwCommandHandlerBase::TAiwParameters& CMnAiwCommandHandlerBase::AiwParameters()
       
   236     {
       
   237     return iAiwParameters;
       
   238     }
       
   239 
       
   240 // -----------------------------------------------------------------------------
       
   241 // -----------------------------------------------------------------------------
       
   242 //
       
   243 CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::RunMode()
       
   244 	{
       
   245 	return iRunMode;
       
   246 	}
       
   247 
       
   248 // -----------------------------------------------------------------------------
       
   249 // -----------------------------------------------------------------------------
       
   250 //
       
   251 void CMnAiwCommandHandlerBase::SetExitObserverL( 
       
   252 	MMnProviderExitCallback& aExitCallback )
       
   253 	{
       
   254 	iExitCallback = &aExitCallback;
       
   255 	}
       
   256 
       
   257 // -----------------------------------------------------------------------------
       
   258 // -----------------------------------------------------------------------------
       
   259 //
       
   260 CMnProvider& CMnAiwCommandHandlerBase::Provider()
       
   261     {
       
   262     return iProvider;
       
   263     }
       
   264 
       
   265 // ================= INTERNAL FUNCTIONS =======================
       
   266 
       
   267 // -----------------------------------------------------------------------------
       
   268 // -----------------------------------------------------------------------------
       
   269 //
       
   270 void CMnAiwCommandHandlerBase::Done( TInt aResult )
       
   271     {
       
   272     TRAP_IGNORE( iCallback->HandleAsyncAiwCmdCompletedL( this, aResult ) );
       
   273     } 
       
   274 
       
   275 // -----------------------------------------------------------------------------
       
   276 // -----------------------------------------------------------------------------
       
   277 //
       
   278 void CMnAiwCommandHandlerBase::ProcessAiwParametersL()
       
   279     {
       
   280     LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL in");
       
   281 
       
   282     RArray<TPtrC8> lmBuffers;
       
   283     CleanupClosePushL( lmBuffers );
       
   284 
       
   285     TPtrC dbUri;
       
   286     RArray<TPosLmItemId> lmIds;
       
   287     CleanupClosePushL( lmIds );
       
   288     
       
   289     for ( TInt i = 0; i < AiwParameters().InList().Count(); i++ )
       
   290         {
       
   291         const TAiwGenericParam& param = AiwParameters().InList()[i];
       
   292         switch ( param.SemanticId() )
       
   293             {
       
   294             case EGenericParamMnCommonOptions:
       
   295                 //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, CommonOptions");
       
   296                 // already handled
       
   297                 break;
       
   298                 
       
   299             case EGenericParamLandmark:
       
   300                 //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, Landmark");
       
   301                 {
       
   302                 TPtrC8 lmData;
       
   303                 ReadLandmarkDataL( param, lmData );
       
   304                 lmBuffers.AppendL( lmData );
       
   305                 break;
       
   306                 }
       
   307             case EGenericParamLandmarkDatabase:
       
   308                 //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkDatabase");
       
   309                 {
       
   310                 if ( dbUri.Length() && lmIds.Count() )
       
   311                     {
       
   312                     HandleAiwParamLandmarksListL( dbUri, lmIds );
       
   313                     dbUri.Set( NULL, 0 );
       
   314                     lmIds.Reset();
       
   315                     }
       
   316                 ReadDatabaseUriL( param, dbUri );
       
   317                 break;
       
   318                 }
       
   319             case EGenericParamLandmarkId:
       
   320                 //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkId");
       
   321                 {
       
   322                 if ( dbUri.Length() )
       
   323                     {
       
   324                     TPosLmItemId lmId = ReadLandmarkId( param );
       
   325                     lmIds.AppendL( lmId );
       
   326                     }
       
   327                 else
       
   328                     {
       
   329                     User::Leave( KErrArgument );
       
   330                     }
       
   331                 break;
       
   332                 }
       
   333             case EGenericParamLandmarkIdList:
       
   334                 //LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL, LandmarkIdList");
       
   335                 {
       
   336                 if ( dbUri.Length() )
       
   337                     {
       
   338                     TInt numLmIds = 0;
       
   339                     const TPosLmItemId* lmIdList = NULL;
       
   340                     ReadLandmarkIdListL( param, lmIdList, numLmIds );
       
   341                     for ( TInt i = 0; i < numLmIds; i++ )
       
   342                         {
       
   343                         lmIds.AppendL( *(lmIdList + i) );
       
   344                         }
       
   345                     }
       
   346                 else
       
   347                     {
       
   348                     User::Leave( KErrArgument );
       
   349                     }
       
   350                 break;
       
   351                 }
       
   352             default:
       
   353                 HandleAiwParamL( param );                
       
   354             }
       
   355         }
       
   356 
       
   357     if ( lmBuffers.Count() )
       
   358         {
       
   359         HandleAiwParamLandmarksL( lmBuffers );
       
   360         }
       
   361         
       
   362     if ( dbUri.Length() && lmIds.Count() )
       
   363         {
       
   364         HandleAiwParamLandmarksListL( dbUri, lmIds );
       
   365         }
       
   366         
       
   367     CleanupStack::PopAndDestroy( &lmIds );
       
   368     CleanupStack::PopAndDestroy( &lmBuffers );
       
   369     LOG("CMnAiwCommandHandlerBase::ProcessAiwParametersL out");
       
   370     }
       
   371 
       
   372 // -----------------------------------------------------------------------------
       
   373 // -----------------------------------------------------------------------------
       
   374 //
       
   375 CMnAiwCommandHandlerBase::TRunMode CMnAiwCommandHandlerBase::RequestedRunModeL( 
       
   376     const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams )
       
   377     {
       
   378     TMnAiwCommonOptionsParamExtended commonOptionsExtended;
       
   379 
       
   380     if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
       
   381         {
       
   382         if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldRunChained )
       
   383             {
       
   384             return commonOptionsExtended.iRunChained ? ERunModeChained : ERunModeStandalone;
       
   385             }
       
   386         }
       
   387     return ERunModeDefault;
       
   388     }
       
   389     
       
   390 // -----------------------------------------------------------------------------
       
   391 // -----------------------------------------------------------------------------
       
   392 //
       
   393 TBool CMnAiwCommandHandlerBase::IsProviderSpecifiedL( 
       
   394     const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams,
       
   395     TInt& aProviderId )
       
   396     {
       
   397     TMnAiwCommonOptionsParamExtended commonOptionsExtended;
       
   398     if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
       
   399         {
       
   400         if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldProviderId )
       
   401             {
       
   402             aProviderId = commonOptionsExtended.iProviderId;
       
   403             return ETrue;
       
   404             }
       
   405         }
       
   406     return EFalse;
       
   407     }
       
   408 
       
   409 // -----------------------------------------------------------------------------
       
   410 // -----------------------------------------------------------------------------
       
   411 //
       
   412 TBool CMnAiwCommandHandlerBase::IsErrorMessageDisabledL( 
       
   413     const CMnAiwCommandHandlerBase::TAiwParameters& aAiwParams )
       
   414     {
       
   415     TMnAiwCommonOptionsParamExtended commonOptionsExtended;
       
   416     if ( FindCommonOptionsL( aAiwParams, commonOptionsExtended ) )
       
   417         {
       
   418         if ( commonOptionsExtended.iFieldsSet & EMnAiwCommonOptionsFieldMessagesDisabled )
       
   419             {
       
   420             return commonOptionsExtended.iMessagesDisabled;
       
   421             }
       
   422         }
       
   423     return EFalse;
       
   424     }
       
   425 
       
   426 // -----------------------------------------------------------------------------
       
   427 // -----------------------------------------------------------------------------
       
   428 //
       
   429 TBool CMnAiwCommandHandlerBase::FindCommonOptionsL( 
       
   430     const TAiwParameters& aAiwParams,
       
   431     TMnAiwCommonOptionsParamExtended& aCommonOptions )
       
   432     {
       
   433     TInt indexOptions = 0;
       
   434     aAiwParams.InList().FindFirst( indexOptions, EGenericParamMnCommonOptions, EVariantTypeDesC8 );
       
   435     if ( indexOptions != KErrNotFound )
       
   436         {
       
   437         const TAiwVariant& value = aAiwParams.InList()[indexOptions].Value();
       
   438         TPtrC8 data( value.AsData() ); 
       
   439         if ( data.Size() == sizeof( TMnAiwCommonOptionsParamExtended ) )
       
   440             {
       
   441             TPckg<TMnAiwCommonOptionsParamExtended> optionsPack( aCommonOptions );
       
   442             optionsPack.Copy( data );
       
   443             return ETrue;
       
   444             }
       
   445         else if ( data.Size() == sizeof( TMnAiwCommonOptionsParam ) )
       
   446             {
       
   447             TMnAiwCommonOptionsParam commonOptions;
       
   448             TPckg<TMnAiwCommonOptionsParam> optionsPack( commonOptions );
       
   449             optionsPack.Copy( data );
       
   450             aCommonOptions.iFieldsSet = EMnAiwCommonOptionsFieldRunChained;
       
   451             aCommonOptions.iRunChained = commonOptions.iRunChained;
       
   452             return ETrue;
       
   453             }
       
   454         }
       
   455     return EFalse;        
       
   456     }
       
   457 
       
   458 // -----------------------------------------------------------------------------
       
   459 // -----------------------------------------------------------------------------
       
   460 //
       
   461 void CMnAiwCommandHandlerBase::ReadLandmarkDataL( const TAiwGenericParam& aParam, TPtrC8& aLandmarkPtr )
       
   462     {
       
   463     aLandmarkPtr.Set( aParam.Value().AsData() );
       
   464     // verify it
       
   465     CPosLandmark* lm = PosLandmarkSerialization::UnpackL( aLandmarkPtr );
       
   466     delete lm;
       
   467     }
       
   468 
       
   469 // -----------------------------------------------------------------------------
       
   470 // -----------------------------------------------------------------------------
       
   471 //
       
   472 TBool CMnAiwCommandHandlerBase::FindLandmarkData( TInt aIndex, TAiwGenericParam& aParam )
       
   473     {
       
   474     TInt found = -1;
       
   475     for ( TInt i = 0; i < AiwParameters().InList().Count(); i++ )
       
   476         {
       
   477         const TAiwGenericParam& param = AiwParameters().InList()[i];
       
   478         if ( param.SemanticId() == EGenericParamLandmark )
       
   479             {
       
   480             found++;
       
   481             }
       
   482         if ( found == aIndex )
       
   483             {
       
   484             aParam = param;
       
   485             return ETrue;
       
   486             }
       
   487         }
       
   488         
       
   489     return EFalse;        
       
   490     }
       
   491 
       
   492 // -----------------------------------------------------------------------------
       
   493 // -----------------------------------------------------------------------------
       
   494 //
       
   495 void CMnAiwCommandHandlerBase::ReadDatabaseUriL( const TAiwGenericParam& aParam, TPtrC& aDbUri )
       
   496     {
       
   497     aDbUri.Set( aParam.Value().AsDes() );
       
   498     if ( !aDbUri.Length() )
       
   499         {
       
   500         User::Leave( KErrArgument );
       
   501         }
       
   502     }
       
   503 
       
   504 // -----------------------------------------------------------------------------
       
   505 // -----------------------------------------------------------------------------
       
   506 //
       
   507 TPosLmItemId CMnAiwCommandHandlerBase::ReadLandmarkId( const TAiwGenericParam& aParam )
       
   508     {
       
   509     return aParam.Value().AsTInt32();
       
   510     }
       
   511 
       
   512 // -----------------------------------------------------------------------------
       
   513 // -----------------------------------------------------------------------------
       
   514 //
       
   515 void CMnAiwCommandHandlerBase::ReadLandmarkIdListL( 
       
   516     const TAiwGenericParam& aParam,
       
   517     const TPosLmItemId*& aListPtr,
       
   518     TInt& aListSize )
       
   519     {
       
   520     TPtrC8 data( aParam.Value().AsData() );
       
   521     
       
   522     if ( data.Size() % sizeof( TPosLmItemId ) )
       
   523         {
       
   524         User::Leave( KErrArgument );
       
   525         }
       
   526     
       
   527     aListPtr = reinterpret_cast<const TPosLmItemId*>( data.Ptr() );
       
   528     aListSize = data.Size() / sizeof( TPosLmItemId );
       
   529     }        
       
   530 
       
   531 // -----------------------------------------------------------------------------
       
   532 // -----------------------------------------------------------------------------
       
   533 //
       
   534 void CMnAiwCommandHandlerBase::WriteLandmarkL( const CPosLandmark& aLandmark )
       
   535     {
       
   536     HBufC8* lmBuf = PosLandmarkSerialization::PackL( aLandmark );
       
   537     CleanupStack::PushL( lmBuf );
       
   538 
       
   539     TAiwGenericParam param( EGenericParamLandmark, TAiwVariant( *lmBuf ) );
       
   540     iAiwParameters.OutList().AppendL( param );
       
   541 
       
   542     CleanupStack::PopAndDestroy( lmBuf );
       
   543     }
       
   544 
       
   545 // -----------------------------------------------------------------------------
       
   546 // -----------------------------------------------------------------------------
       
   547 //
       
   548 void CMnAiwCommandHandlerBase::WriteLandmarkL( TPosLmItemId aLandmarkId, const TDesC& aDatabaseUri )
       
   549     {
       
   550     TAiwGenericParam lmId( EGenericParamLandmarkId, TAiwVariant( aLandmarkId ) );
       
   551     TAiwGenericParam dbUri( EGenericParamLandmarkDatabase, TAiwVariant( aDatabaseUri ) );
       
   552 
       
   553     iAiwParameters.OutList().AppendL( dbUri );
       
   554     iAiwParameters.OutList().AppendL( lmId );
       
   555     }
       
   556 
       
   557 // -----------------------------------------------------------------------------
       
   558 // -----------------------------------------------------------------------------
       
   559 //
       
   560 void CMnAiwCommandHandlerBase::HandleAiwParamL( const TAiwGenericParam& /*aParam*/ )
       
   561     {
       
   562     User::Leave( KErrArgument );
       
   563     }
       
   564     
       
   565 // -----------------------------------------------------------------------------
       
   566 // -----------------------------------------------------------------------------
       
   567 //
       
   568 void CMnAiwCommandHandlerBase::HandleAiwParamLandmarksL( RArray<TPtrC8>& /*aLandmarkDataList*/ )
       
   569     {
       
   570     User::Leave( KErrArgument );
       
   571     }
       
   572     
       
   573 // -----------------------------------------------------------------------------
       
   574 // -----------------------------------------------------------------------------
       
   575 //
       
   576 void CMnAiwCommandHandlerBase::HandleAiwParamLandmarksListL( 
       
   577     const TDesC& /*aDbUri*/, 
       
   578     RArray<TPosLmItemId>& /*aLmIds*/ )
       
   579     {
       
   580     User::Leave( KErrArgument );
       
   581     }
       
   582 
       
   583 // -----------------------------------------------------------------------------
       
   584 //  From class CActive
       
   585 // -----------------------------------------------------------------------------
       
   586 //
       
   587 void CMnAiwCommandHandlerBase::RunL()
       
   588     {
       
   589 #ifdef _DEBUG    
       
   590     LOG("CMnAiwCommandHandlerBase::RunL in, panicking");
       
   591     Panic( KErrGeneral );
       
   592 #endif    
       
   593     }
       
   594 
       
   595 // -----------------------------------------------------------------------------
       
   596 //  From class CActive
       
   597 // -----------------------------------------------------------------------------
       
   598 //
       
   599 TInt CMnAiwCommandHandlerBase::RunError( TInt aError )
       
   600     {
       
   601     Done( aError );
       
   602     return KErrNone;
       
   603     }
       
   604 
       
   605 // -----------------------------------------------------------------------------
       
   606 //  From class CActive
       
   607 // -----------------------------------------------------------------------------
       
   608 //
       
   609 void CMnAiwCommandHandlerBase::DoCancel()
       
   610     {
       
   611     Done( KErrCancel );
       
   612     }
       
   613 
       
   614 // -----------------------------------------------------------------------------
       
   615 // From MAknServerAppExitObserver
       
   616 // -----------------------------------------------------------------------------
       
   617 //
       
   618 void CMnAiwCommandHandlerBase::HandleServerAppExit( TInt aReason )
       
   619 	{
       
   620     LOG1("CMnAiwCommandHandlerBase::HandleServerAppExit in, reason %d", aReason );
       
   621 	
       
   622 	if ( iRunMode == ERunModeChained )
       
   623 	    {
       
   624 	    // for standlone mode this event is ignored,
       
   625 	    // otherwise client will be shutdown whenever provider exits
       
   626 	    MAknServerAppExitObserver::HandleServerAppExit( aReason );
       
   627 	    }
       
   628 
       
   629 	if ( iExitCallback )
       
   630 		{
       
   631 		iExitCallback->HandleProviderExit( this );
       
   632 		}
       
   633 #ifdef _DEBUG
       
   634 	else
       
   635 		{
       
   636 		Panic( KErrGeneral );
       
   637 		}
       
   638 #endif		
       
   639 	    
       
   640     LOG("CMnAiwCommandHandlerBase::HandleServerAppExit out");
       
   641 	}
       
   642 
       
   643 //===================== TAiwParameters ====================
       
   644 
       
   645 // -----------------------------------------------------------------------------
       
   646 // -----------------------------------------------------------------------------
       
   647 //
       
   648 CMnAiwCommandHandlerBase::TAiwParameters::TAiwParameters()
       
   649 :   iInParamList( NULL ),    
       
   650     iOutParamList( NULL ),
       
   651     iCallback( NULL )
       
   652     {
       
   653     }
       
   654 
       
   655 // -----------------------------------------------------------------------------
       
   656 // -----------------------------------------------------------------------------
       
   657 //
       
   658 CMnAiwCommandHandlerBase::TAiwParameters::TAiwParameters(
       
   659     const CAiwGenericParamList& aInParamList,
       
   660     CAiwGenericParamList& aOutParamList,
       
   661     const MAiwNotifyCallback* aCallback )
       
   662 :   iInParamList( &aInParamList ),    
       
   663     iOutParamList( &aOutParamList ),
       
   664     iCallback( aCallback )
       
   665     {
       
   666     }
       
   667     
       
   668 // -----------------------------------------------------------------------------
       
   669 // -----------------------------------------------------------------------------
       
   670 //
       
   671 const CAiwGenericParamList& CMnAiwCommandHandlerBase::TAiwParameters::InList() const
       
   672     {
       
   673     return *iInParamList;
       
   674     }
       
   675     
       
   676 // -----------------------------------------------------------------------------
       
   677 // -----------------------------------------------------------------------------
       
   678 //
       
   679 CAiwGenericParamList& CMnAiwCommandHandlerBase::TAiwParameters::OutList()
       
   680     {
       
   681     return *iOutParamList;
       
   682     }
       
   683     
       
   684 // -----------------------------------------------------------------------------
       
   685 // -----------------------------------------------------------------------------
       
   686 //
       
   687 const MAiwNotifyCallback* CMnAiwCommandHandlerBase::TAiwParameters::Callback() const
       
   688     {
       
   689     return iCallback;
       
   690     }