diff -r 000000000000 -r 08ec8eefde2f featuremgmt/featureregistry/inc/featreg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/featuremgmt/featureregistry/inc/featreg.h Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,109 @@ +// Copyright (c) 2005-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: +// Public interface for querying support for features on a device, and +// subscribing for notification if any features are added or removed. +// +// + +#ifndef FEATREG_H +#define FEATREG_H + +/** + * Interface for inquiring whether features are supported on the device. + * + * The code segment below shows an example of how the QuerySupport() API + * should be used in client code that checks feature status. + * + * @code + * + * // Single query + * // + * TBool haveUsb = RFeatureRegistry::QuerySupportS(NFeature::KUsb) > 0; + * if (haveUsb) + * { // ... connect to USB service ... + * } + * + * // or Multiple queries + * // + * RFeatureRegistry featReg; + * const TBool opened = (featReg.Open() == KErrNone); + * iHaveUsb = opened && (featReg.QuerySupport(NFeature::KUsb) > 0); + * iHaveBluetooth = opened && (featReg.QuerySupport(NFeature::KBluetooth) > 0); + * featReg.Close(); // can always call Close(), even if Open() failed: + * // ... proceed to update application menus based on these featue flags + * + * @endcode + * + * Note the QuerySupport() API can return a negative error code. Clients + * calling this API need to decide if this should result in specific error + * handling or whether ignoring the error and assuming the feature is not + * supported is the best policy. + * + * @see RFeatureRegistry::QuerySupportS + * @publishedPartner + * @deprecated + */ +NONSHARABLE_CLASS(RFeatureRegistry) + { +public: + /** + * Bit assignments in status word for listed features + * + * @internalComponent + */ + enum + { + EStatusSupportBit = 1, + EStatusUpgradableBit = 2 + }; + inline RFeatureRegistry(); + IMPORT_C TInt Open(); + IMPORT_C TInt QuerySupport(TUid aFeatureUid); + IMPORT_C TInt QuerySupport(TUid aFeatureUid, TUint32& aInfo); + IMPORT_C void Close(); + + IMPORT_C static TInt QuerySupportS(TUid aFeatureUid); + IMPORT_C static TInt QuerySupportS(TUid aFeatureUid, TUint32& aInfo); + +private: + class TImpl; + TImpl* iImpl; + }; + +#ifndef SYMBIAN_FEATURE_MANAGER +/** + * Interface for obtaining notification of changes in the Feature Registry. + * + * @internalComponent + */ + +NONSHARABLE_CLASS(RFeatureRegistryNotify) + { +public: + inline RFeatureRegistryNotify(); + IMPORT_C TInt Open(); + IMPORT_C void Subscribe(TRequestStatus &aNotifyStatus); + IMPORT_C void Cancel(); + IMPORT_C void Close(); + +private: + class TImpl; + TImpl* iImpl; + }; + +#endif + +#include + +#endif