sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include "featdiscoveryimpl.h" sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::TFeatureSet() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TFeatureSet::TFeatureSet() : sl@0: iCount( 0 ) sl@0: { sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::~TFeatureSet() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TFeatureSet::~TFeatureSet() sl@0: { sl@0: iStatus.Close(); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::Append(TUid) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TInt TFeatureSet::Append( TUid aFeature ) sl@0: { sl@0: TInt err; sl@0: TFeatureStat feature; sl@0: feature.iFeatureID = aFeature; sl@0: feature.iSupported=EFalse; sl@0: sl@0: err = iStatus.Append( feature ); sl@0: if( err == KErrNone ) sl@0: { sl@0: iCount++; sl@0: } sl@0: sl@0: return err; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::IsFeatureSupported(TUid) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool TFeatureSet::IsFeatureSupported( TUid aFeature ) const sl@0: { sl@0: TBool featureSupported( EFalse ); sl@0: TFeatureStat feature; sl@0: feature.iFeatureID = aFeature; sl@0: TInt index = iStatus.Find( feature ); sl@0: if( index != KErrNotFound ) sl@0: { sl@0: featureSupported = iStatus[index].iSupported; sl@0: } sl@0: sl@0: return featureSupported; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::AreAllFeaturesSupported() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool TFeatureSet::AreAllFeaturesSupported() const sl@0: { sl@0: //if the request array is empty return true sl@0: if( !iCount ) return ETrue; sl@0: sl@0: TBool allSupported( ETrue ); sl@0: TInt count( iStatus.Count() ); sl@0: sl@0: if( count != iCount ) sl@0: { sl@0: // Features have been removed from array, because they don't exist. sl@0: allSupported = EFalse; sl@0: } sl@0: else sl@0: { sl@0: for(TInt i(0); i < count; i++) sl@0: { sl@0: if( !iStatus[i].iSupported ) sl@0: { sl@0: allSupported = EFalse; sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: return allSupported; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::Count() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt TFeatureSet::Count() sl@0: { sl@0: return iStatus.Count(); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::Reset() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TUid TFeatureSet::FeatureId( TInt aIndex ) const sl@0: { sl@0: return iStatus[aIndex].iFeatureID; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::Reset() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: void TFeatureSet::Reset() sl@0: { sl@0: iStatus.Reset(); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // TFeatureSet::Append() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: TInt TFeatureSet::Append( TUid aFeature, TBool aSupported ) sl@0: { sl@0: TFeatureStat feature; sl@0: feature.iFeatureID = aFeature; sl@0: feature.iSupported = aSupported; sl@0: sl@0: return iStatus.Append( feature ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::CFeatureDiscovery* NewL() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CFeatureDiscovery* CFeatureDiscovery::NewL() sl@0: { sl@0: CFeatureDiscovery* self = NewLC(); sl@0: CleanupStack::Pop( self); sl@0: sl@0: return self; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::CFeatureDiscovery* NewLC() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CFeatureDiscovery* CFeatureDiscovery::NewLC() sl@0: { sl@0: CFeatureDiscovery* self = new( ELeave ) CFeatureDiscovery(); sl@0: CleanupStack::PushL( self ); sl@0: self->ConstructL(); sl@0: sl@0: return self; sl@0: } sl@0: sl@0: // --------------------------------------------------------- sl@0: // CFeatureDiscovery::ConstructL sl@0: // sl@0: // Symbian OS default constructor, initializes variables and cache sl@0: // --------------------------------------------------------- sl@0: // sl@0: void CFeatureDiscovery::ConstructL() sl@0: { sl@0: iImpl = CFeatureDiscoveryImpl::NewL(); sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::~CFeatureDiscovery() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: CFeatureDiscovery::~CFeatureDiscovery() sl@0: { sl@0: delete iImpl; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::CFeatureDiscovery() sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: CFeatureDiscovery::CFeatureDiscovery() sl@0: { sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::IsFeatureSupportedL(TInt) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool CFeatureDiscovery::IsFeatureSupportedL(TInt aFeature) sl@0: { sl@0: return CFeatureDiscoveryImpl::IsFeatureSupportedL( TUid::Uid( aFeature ) ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::IsFeatureSupportedL(TUid) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool CFeatureDiscovery::IsFeatureSupportedL(TUid aFeature) sl@0: { sl@0: return CFeatureDiscoveryImpl::IsFeatureSupportedL( aFeature ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::IsSupported(TInt) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool CFeatureDiscovery::IsSupported(TInt aFeature) const sl@0: { sl@0: return iImpl->IsSupported( TUid::Uid( aFeature ) ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::IsSupported(TUid) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TBool CFeatureDiscovery::IsSupported(TUid aFeature) const sl@0: { sl@0: return iImpl->IsSupported( aFeature ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::FeaturesSupportedL(TFeatureSet&) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C void CFeatureDiscovery::FeaturesSupportedL( TFeatureSet& aFeatures ) sl@0: { sl@0: CFeatureDiscoveryImpl::FeaturesSupportedL( aFeatures ); sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CFeatureDiscovery::FeaturesSupported(TFeatureSet&) sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TInt CFeatureDiscovery::FeaturesSupported( TFeatureSet& aFeatures ) const sl@0: { sl@0: return iImpl->FeaturesSupported( aFeatures ); sl@0: } sl@0: sl@0: // EOF