featuremgmt/featureregistry/inc/featreg.h
changeset 0 08ec8eefde2f
--- /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 <featreg.inl> 
+
+#endif