featuremgmt/featuremgr/src/featdiscovery/featdiscovery.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 15 Mar 2010 12:46:30 +0200
branchRCL_3
changeset 9 667e88a979d7
parent 0 08ec8eefde2f
permissions -rw-r--r--
Revision: 201010 Kit: 201010

// Copyright (c) 2007-2009 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:
//



#include <featdiscovery.h>
#include <e32cmn.h>
#include "featdiscoveryimpl.h"

// -----------------------------------------------------------------------------
// TFeatureSet::TFeatureSet()
// -----------------------------------------------------------------------------
//
EXPORT_C TFeatureSet::TFeatureSet() :
    iCount( 0 )
    {
    }

// -----------------------------------------------------------------------------
// TFeatureSet::~TFeatureSet()
// -----------------------------------------------------------------------------
//
EXPORT_C TFeatureSet::~TFeatureSet()
    {
    iStatus.Close();
    }

// -----------------------------------------------------------------------------
// TFeatureSet::Append(TUid)
// -----------------------------------------------------------------------------
//
EXPORT_C TInt TFeatureSet::Append( TUid aFeature )
    {
    TInt err;
    TFeatureStat feature;
    feature.iFeatureID = aFeature;
    feature.iSupported=EFalse;
    
    err = iStatus.Append( feature );
    if( err == KErrNone )
        {
        iCount++;
        }
    
    return err;
    }

// -----------------------------------------------------------------------------
// TFeatureSet::IsFeatureSupported(TUid)
// -----------------------------------------------------------------------------
//
EXPORT_C TBool TFeatureSet::IsFeatureSupported( TUid aFeature ) const
    {
    TBool featureSupported( EFalse );
    TFeatureStat feature;
    feature.iFeatureID = aFeature;
    TInt index = iStatus.Find( feature );
    if( index != KErrNotFound )
        {
        featureSupported = iStatus[index].iSupported;
        }
    
    return featureSupported;
    }

// -----------------------------------------------------------------------------
// TFeatureSet::AreAllFeaturesSupported()
// -----------------------------------------------------------------------------
//
EXPORT_C TBool TFeatureSet::AreAllFeaturesSupported() const
    {
    //if the request array is empty return true 
    if( !iCount ) return ETrue;
    
    TBool allSupported( ETrue );
    TInt count( iStatus.Count() );
    
    if( count != iCount )
        {
        // Features have been removed from array, because they don't exist.
        allSupported = EFalse;
        }
    else
        {
        for(TInt i(0); i < count; i++)
            {
            if( !iStatus[i].iSupported )
                {
                allSupported = EFalse;
                break;
                }
            }
        }
    
    return allSupported;
    }

// -----------------------------------------------------------------------------
// TFeatureSet::Count()
// -----------------------------------------------------------------------------
//
TInt TFeatureSet::Count()
    {
    return iStatus.Count();
    }

// -----------------------------------------------------------------------------
// TFeatureSet::Reset()
// -----------------------------------------------------------------------------
//
TUid TFeatureSet::FeatureId( TInt aIndex ) const
    {
    return iStatus[aIndex].iFeatureID;
    }

// -----------------------------------------------------------------------------
// TFeatureSet::Reset()
// -----------------------------------------------------------------------------
//
void TFeatureSet::Reset()
    {
    iStatus.Reset();
    }

// -----------------------------------------------------------------------------
// TFeatureSet::Append()
// -----------------------------------------------------------------------------
//
TInt TFeatureSet::Append( TUid aFeature, TBool aSupported )
    {
    TFeatureStat feature;
    feature.iFeatureID = aFeature;
    feature.iSupported = aSupported;
    
    return iStatus.Append( feature );
    }

// -----------------------------------------------------------------------------
// CFeatureDiscovery::CFeatureDiscovery* NewL()
// -----------------------------------------------------------------------------
//
EXPORT_C CFeatureDiscovery* CFeatureDiscovery::NewL()
    {
    CFeatureDiscovery* self = NewLC();
    CleanupStack::Pop( self);

    return self;
    }


// -----------------------------------------------------------------------------
// CFeatureDiscovery::CFeatureDiscovery* NewLC()
// -----------------------------------------------------------------------------
//
EXPORT_C CFeatureDiscovery* CFeatureDiscovery::NewLC()
    {
    CFeatureDiscovery* self = new( ELeave ) CFeatureDiscovery();
    CleanupStack::PushL( self );
    self->ConstructL();

    return self;
    }

// ---------------------------------------------------------
// CFeatureDiscovery::ConstructL
//
// Symbian OS default constructor, initializes variables and cache 
// ---------------------------------------------------------
//
void CFeatureDiscovery::ConstructL()
    {
    iImpl = CFeatureDiscoveryImpl::NewL();
    }


// -----------------------------------------------------------------------------
// CFeatureDiscovery::~CFeatureDiscovery()
// -----------------------------------------------------------------------------
//
CFeatureDiscovery::~CFeatureDiscovery()
    {
    delete iImpl;
    }


// -----------------------------------------------------------------------------
// CFeatureDiscovery::CFeatureDiscovery()
// -----------------------------------------------------------------------------
//
CFeatureDiscovery::CFeatureDiscovery()
    {
    }


// -----------------------------------------------------------------------------
// CFeatureDiscovery::IsFeatureSupportedL(TInt)
// -----------------------------------------------------------------------------
//
EXPORT_C TBool CFeatureDiscovery::IsFeatureSupportedL(TInt aFeature)
    {
    return CFeatureDiscoveryImpl::IsFeatureSupportedL( TUid::Uid( aFeature ) );
    }

// -----------------------------------------------------------------------------
// CFeatureDiscovery::IsFeatureSupportedL(TUid)
// -----------------------------------------------------------------------------
//
EXPORT_C TBool CFeatureDiscovery::IsFeatureSupportedL(TUid aFeature)
    {
    return CFeatureDiscoveryImpl::IsFeatureSupportedL( aFeature );
    }

// -----------------------------------------------------------------------------
// CFeatureDiscovery::IsSupported(TInt)
// -----------------------------------------------------------------------------
//
EXPORT_C TBool CFeatureDiscovery::IsSupported(TInt aFeature) const
    {
    return iImpl->IsSupported( TUid::Uid( aFeature ) );
    }

// -----------------------------------------------------------------------------
// CFeatureDiscovery::IsSupported(TUid)
// -----------------------------------------------------------------------------
//
EXPORT_C TBool CFeatureDiscovery::IsSupported(TUid aFeature) const
    {
    return iImpl->IsSupported( aFeature );
    }

// -----------------------------------------------------------------------------
// CFeatureDiscovery::FeaturesSupportedL(TFeatureSet&)
// -----------------------------------------------------------------------------
//
EXPORT_C void CFeatureDiscovery::FeaturesSupportedL( TFeatureSet& aFeatures )
    {
    CFeatureDiscoveryImpl::FeaturesSupportedL( aFeatures );
    }
    
// -----------------------------------------------------------------------------
// CFeatureDiscovery::FeaturesSupported(TFeatureSet&)
// -----------------------------------------------------------------------------
//
EXPORT_C TInt CFeatureDiscovery::FeaturesSupported( TFeatureSet& aFeatures ) const
    {
    return iImpl->FeaturesSupported( aFeatures );
    }

// EOF