locationmapnavfw/library/src/mnproviderimpl.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- 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;
-        }
-    }