diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/featdiscovery.h --- a/epoc32/include/featdiscovery.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/featdiscovery.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,157 @@ -featdiscovery.h +/* +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Offers functionality for querying whether a feature is +* supported in the current environment. +* +*/ + + +#ifndef FEATUREDISCOVERY_H +#define FEATUREDISCOVERY_H + +// INCLUDES +#include + + +/** +* Class used to query which features are suppported in the environment. +* Feature Discovery API provides methods which are used to query which +* features are supported in the environment. A feature is a functionality that +* can be optionally left out of some product configurations. Features often +* depend on the underlying hardware. For example, MMC support or USB support +* can be features. The API consist of the CFeatureDiscovery class which is +* used together with feature IDs defined in the featureinfo.h file. +* +* +* Usage: +* +* @code +* #include +* #include // for feature definitions +* +* // If querying only one feature, it is more efficient to use the class +* // via the static method, IsFeatureSupportedL(). +* // When querying more than one feature, it is more efficient to use the +* // class by creating an instance and calling the IsSupported() method. +* +* // Static way of using the class: +* TBool isSupported = CFeatureDiscovery::IsFeatureSupportedL(KFeatureIdUsb); +* +* // Dynamic way of using the class using NewL(): +* +* // Call NewL() to create an instance of CFeatureDiscovery. +* CFeatureDiscovery* testA = CFeatureDiscovery::NewL(); +* +* // Call the exported IsSupported() method to query whether features +* // are supported in the current environment or not. +* TBool usbSupported = testA->IsSupported(KFeatureIdUsb); +* TBool mmcSupported = testA->IsSupported(KFeatureIdMmc); +* +* // Delete the created instance of CFeatureDiscovery. +* delete testA; +* +* // Dynamic way of using the class using NewLC(): +* +* // Call NewLC() to create an instance of CFeatureDiscovery. +* // The method leaves the instance of the object on the cleanup stack. +* CFeatureDiscovery* testB = CFeatureDiscovery::NewLC(); +* +* // Call the exported IsSupported() method to query whether features +* // are supported in the current environment or not. +* TBool wcdmaSupported = testB->IsSupported(KFeatureIdProtocolWcdma); +* TBool gsmSupported = testB->IsSupported(KFeatureIdProtocolGsm); +* +* // Pop and delete the created instance of CFeatureDiscovery. +* CleanupStack::PopAndDestroy(); +* @endcode +* +* @lib featdiscovery.lib +* @since S60 2.8 +*/ + +class CFeatureDiscovery : public CBase + { + public: + + /** + * This is a two-phase constructor method that is used to create + * a new instance of the CFeatureDiscovery class. + * + * @return a pointer to a new instance of the CFeatureDiscovery class. + * + * @leave One of the Symbian OS error codes + */ + IMPORT_C static CFeatureDiscovery* NewL(); + + /** + * This is a two-phase constructor method that is used to create + * a new instance of the CFeatureDiscovery class. This method leaves + * the instance of the object on the cleanup stack. + * + * @return a pointer to a new instance of the CFeatureDiscovery class. + * + * @leave One of the Symbian OS error codes + */ + IMPORT_C static CFeatureDiscovery* NewLC(); + + /** + * Destructor. + */ + virtual ~CFeatureDiscovery(); + + /** + * Static way to fetch information whether a certain feature is + * supported in the current envinronment. There is no need to create + * an instance of the class when using this method. + * + * @param aFeature is the feature ID of the feature that is queried. + * @return a TBool indicating whether the feature is supported (ETrue) + * or not (EFalse). If the feature does not exist, the return value is + * EFalse. + * + * @leave One of the Symbian OS error codes. + */ + IMPORT_C static TBool IsFeatureSupportedL(TInt aFeature); + + /** + * Dynamic way to fetch information whether a certain feature is + * supported in the current environment. Before calling the method + * an instance of the CFeatureDiscovery class need to be created by + * using one of the factory methods, NewL() or NewLC(). The created + * instance must be deleted after use. + * + * @param aFeature is the feature ID of the feature that is queried. + * @return a TBool indicating whether the feature is supported (ETrue) + * or not (EFalse). If the feature does not exist, the return value is + * EFalse. + */ + IMPORT_C TBool IsSupported(TInt aFeature) const ; + + private: + + /** + * C++ default constructor. + */ + CFeatureDiscovery(); + + /** + * By default Symbian OS constructor is private. + */ + void ConstructL(); + } ; + + +#endif // FEATUREDISCOVERY_H + +// EOF