--- a/locationmapnavfw/library/src/mnproviderimpl.cpp Thu Aug 19 10:20:18 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +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: CMnProviderImpl class implementation
-*
-*/
-
-
-#include <e32base.h>
-#include <ecom/ecom.h>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <apaid.h>
-#else
-#include <apaid.h>
-#include <apaidpartner.h>
-#endif
-#include <apgcli.h>
-#include <swi/sisregistryentry.h>
-#include <swi/sistruststatus.h>
-#include <swi/sisregistrypackage.h>
-
-#include "mnserviceclientbase.h"
-#include "mnappserviceuids.hrh"
-
-#include "mnpluginuids.hrh"
-#include "mnproviderimpl.h"
-
-#include "mndebug.h"
-
-// ======== LOCAL FUNCTIONS ========
-
-extern TUid ServiceUid( CMnProvider::TService aService );
-
-// ---------------------------------------------------------------------------
-// Cleanup item for RImplInfoPtrArray
-// ---------------------------------------------------------------------------
-//
-void CleanupImplementationsArray( TAny* aArray )
- {
- ( static_cast<RImplInfoPtrArray*>( aArray ) )->ResetAndDestroy();
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CMnProviderImpl::CMnProviderImpl()
- {
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CMnProviderImpl::~CMnProviderImpl()
- {
- delete iName;
- delete iShortName;
- delete iVendorName;
- REComSession::FinalClose();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CMnProviderImpl* CMnProviderImpl::NewL( TUid aProvider )
- {
- CMnProviderImpl* self = new(ELeave) CMnProviderImpl;
- CleanupStack::PushL( self );
- self->ConstructL( aProvider );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CMnProviderImpl* CMnProviderImpl::NewL(
- TUid aAppUid,
- RApaLsSession& aApaSession,
- Swi::RSisRegistrySession& aSisSession )
- {
- CMnProviderImpl* self = new(ELeave) CMnProviderImpl;
- CleanupStack::PushL( self );
- self->ConstructL( aAppUid, aApaSession, aSisSession );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::ConstructL( TUid aProvider )
- {
- RApaLsSession apa;
- User::LeaveIfError( apa.Connect() );
- CleanupClosePushL( apa );
-
- Swi::RSisRegistrySession sis;
- User::LeaveIfError( sis.Connect() );
- CleanupClosePushL( sis );
-
- ConstructL( aProvider, apa, sis );
-
- CleanupStack::PopAndDestroy( &sis );
- CleanupStack::PopAndDestroy( &apa );
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::ConstructL(
- TUid aAppUid,
- RApaLsSession& aApaSession,
- Swi::RSisRegistrySession& aSisSession )
- {
- iUid = aAppUid;
- ReadAppArcInfoL( aApaSession );
- ReadServiceFeaturesL( aApaSession );
- ReadPackageInfoL( aSisSession );
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::ReadAppArcInfoL( RApaLsSession& aApa )
- {
- LOG("CMnProviderImpl::ReadAppArcInfoL");
-
- TApaAppInfo appInfo;
- User::LeaveIfError( aApa.GetAppInfo( appInfo, iUid ) );
-
- SetNameL( appInfo.iCaption );
- SetShortNameL( appInfo.iShortCaption );
-
- // get additional data from SERVICE_INFO structs
-
- const TInt KGranularity = 8;
- CArrayFixFlat< TUid >* serviceUids =
- new (ELeave) CArrayFixFlat< TUid > ( KGranularity );
- CleanupStack::PushL( serviceUids );
-
- aApa.GetAppServicesL( iUid, *serviceUids );
-
- for ( TInt s = 0; s < serviceUids->Count(); s++ )
- {
- switch ( (*serviceUids)[s].iUid )
- {
- case KMnAppMapViewService:
- iServices |= EServiceMapView;
- break;
- case KMnAppNavigationService:
- iServices |= EServiceNavigation;
- break;
- case KMnAppGeocodingService:
- iServices |= EServiceGeocoding;
- break;
- case KMnAppMapImageService:
- iServices |= EServiceMapImage;
- break;
- }
- }
-
- CleanupStack::PopAndDestroy( serviceUids );
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TBool CMnProviderImpl::ReadMnServiceInfoL(
- RApaLsSession& aApaSession,
- TUid aServiceUid,
- TMnAppServiceInfo& aServiceInfo)
- {
- LOG1("CMnProviderImpl::ReadMnServiceInfoL appSvcUid 0x%X", aServiceUid.iUid);
-
- TBool found = EFalse;
-
- CApaAppServiceInfoArray* infoArray = aApaSession.GetAppServiceOpaqueDataLC( iUid, aServiceUid );
- if ( infoArray )
- {
- TArray< TApaAppServiceInfo > array = infoArray->Array();
- for ( TInt i = 0; i < array.Count(); i++ )
- {
- TPtrC8 ptr = array[i].OpaqueData();
-
- if ( ptr.Size() == sizeof ( TMnAppServiceInfo ) )
- {
- memcpy(&aServiceInfo, ptr.Ptr(), sizeof ( TMnAppServiceInfo ) );
- found = ETrue;
- break;
- }
- }
- }
-
- CleanupStack::PopAndDestroy( infoArray );
- return found;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::CheckServiceFeaturesL(
- RApaLsSession& aApaSession,
- CMnProvider::TService aService,
- TUint32& aServiceFeatures )
- {
- TMnAppServiceInfo info;
- TBool found = ReadMnServiceInfoL( aApaSession, ServiceUid( aService ), info );
- if ( found && info.iServiceFeatures )
- {
- aServiceFeatures = info.iServiceFeatures;
- }
- else
- {
- iServices &= ~aService;
- }
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::ReadServiceFeaturesL( RApaLsSession& aApaSession )
- {
- if ( iServices & EServiceMapView )
- {
- CheckServiceFeaturesL( aApaSession, EServiceMapView, iMapViewFeatures );
- }
-
- if ( iServices & EServiceNavigation )
- {
- CheckServiceFeaturesL( aApaSession, EServiceNavigation, iNavigationFeatures );
- }
-
- if ( iServices & EServiceGeocoding )
- {
- CheckServiceFeaturesL( aApaSession, EServiceGeocoding, iGeocodingFeatures );
- }
-
- if ( iServices & EServiceMapImage )
- {
- CheckServiceFeaturesL( aApaSession, EServiceMapImage, iMapImageFeatures );
- if ( !IsConverterPluginFoundL() )
- {
- iServices &= ~EServiceMapImage;
- iMapImageFeatures = 0;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-#ifndef __WINS__
-
-void CMnProviderImpl::ReadPackageInfoL( Swi::RSisRegistrySession& aSisSession )
- {
- LOG("CMnProviderImpl::ReadPackageInfoL");
-
- Swi::CSisRegistryPackage* package = aSisSession.SidToPackageL(iUid);
- CleanupStack::PushL( package );
-
- Swi::RSisRegistryEntry entry;
- User::LeaveIfError( entry.OpenL( aSisSession, *package ) );
- CleanupClosePushL( entry );
-
- // FW wants to know trust level of Provider Applications
- Swi::TSisTrustStatus trust = entry.TrustStatusL();
- iIsTrusted = ( trust.ValidationStatus() >= Swi::EValidatedToAnchor );
-
- // other needed info
- SetVersion( entry.VersionL() );
-
- HBufC* vendorName = entry.LocalizedVendorNameL();
- CleanupStack::PushL( vendorName );
- SetVendorNameL( vendorName->Des() );
- CleanupStack::PopAndDestroy( vendorName );
-
- CleanupStack::PopAndDestroy( &entry );
- CleanupStack::PopAndDestroy( package );
- }
-
-#else
-
-void CMnProviderImpl::ReadPackageInfoL( Swi::RSisRegistrySession& /*aSisSession */ )
- {
- LOG("CMnProviderImpl::ReadPackageInfoL");
- iIsTrusted = ETrue;
- }
-
-#endif
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TBool CMnProviderImpl::IsTrusted()
- {
- return iIsTrusted;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TBool CMnProviderImpl::IsConverterPluginFoundL()
- {
- TUid converterIf = { KMnMapImageConverterIf };
-
- const TInt KNumUidHexDigits = 8;
- TBuf8<KNumUidHexDigits> uidText8;
-
- _LIT8( KUidHexText, "%08X" );
- uidText8.Format( KUidHexText, iUid );
-
- TEComResolverParams resolverParams;
- resolverParams.SetDataType( uidText8 );
-
- RImplInfoPtrArray implementations;
- CleanupStack::PushL( TCleanupItem( CleanupImplementationsArray, &implementations ) );
-
- REComSession::ListImplementationsL( converterIf, resolverParams, implementations );
- TBool found = ( implementations.Count() > 0 );
- CleanupStack::PopAndDestroy(); // cleanup item
- return found;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::SetNameL( const TDesC& aName )
- {
- __ASSERT_DEBUG( !iName, Panic( KErrGeneral ) );
- iName = aName.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::SetShortNameL( const TDesC& aShortName )
- {
- __ASSERT_DEBUG( !iShortName, Panic( KErrGeneral ) );
- iShortName = aShortName.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::SetVendorNameL( const TDesC& aVendorName )
- {
- __ASSERT_DEBUG( !iVendorName, Panic( KErrGeneral ) );
- iVendorName = aVendorName.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::SetVersion( TVersion aVersion )
- {
- iVersion = aVersion;
- }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CMnProviderImpl::SetSupportedServices( TServices aServices )
- {
- iServices = aServices;
- }
-
-// ---------------------------------------------------------------------------
-// From class CMnProvider.
-// ---------------------------------------------------------------------------
-//
-TUint32 CMnProviderImpl::SupportedFeatures( TService aService ) const
- {
- switch ( aService )
- {
- case EServiceMapView:
- return iMapViewFeatures;
-
- case EServiceNavigation:
- return iNavigationFeatures;
-
- case EServiceGeocoding:
- return iGeocodingFeatures;
-
- case EServiceMapImage:
- return iMapImageFeatures;
-
- default:
- return 0;
- }
- }