libraries/qr3/inc/Utils.h
changeset 0 7f656887cf89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libraries/qr3/inc/Utils.h	Wed Jun 23 15:52:26 2010 +0100
@@ -0,0 +1,105 @@
+// Utils.h
+// 
+// Copyright (c) 2010 Accenture. All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the "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:
+// Accenture - Initial contribution
+//
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <fshell/QR3ProductPlugin.h>
+#include <fshell/qr3dll.h>
+
+void HR(TDes& aDes, TInt64 aSize); // Human readable formatting of aSize as a memory size (eg 1500 -> "1.46 KB")
+void HR(TDes8& aDes, TInt64 aSize); 
+
+TPtrC ToString(TProcessPriority aPriority);
+TPtrC ToString(TThreadPriority aPriority);
+TPtrC ToString(TExitType aType);
+HBufC* ToStringL(SCapabilitySet& aCaps);
+TPtrC ToString(User::TCritical aCritical);
+TPtrC ToStringHal(TInt aHalAttribute);
+void ToStringHalVal(TDes& aDes, TInt aHalAttribute, TInt aHalValue);
+
+void PrettyName(TInt aType, TDes& aName); // aType is a TKernelObjectType
+
+//extern const char*const* KKTraceFlags[];
+TPtrC8 TraceFlagName(TInt aWord, TInt aBit);
+
+extern char const* const* const KCloggerTags[];
+
+//extern const char* KFileServerTraceFlags[];
+
+class CEcomWatcher;
+
+NONSHARABLE_CLASS(CDefaultProductPlugin) : public CBase, public MProductPlugin
+	{
+public:
+	static void LoadProductPluginL();
+	~CDefaultProductPlugin();
+
+	// From MProductPluginV1
+	TPtrC8 TraceFlagName(TInt aWord, TInt aBit);
+	void FormatValue(TDes& aDes, TValueType aType, TInt aAttrib, TInt aVal);
+	TUint32 GetDeviceType();
+	TBool HandleErrorL(TError aType, TInt aErr);
+	TKeyResponse OfferKeyEventL(TKeyEvent& aEvent, TEventCode aType);
+	void RefreshTabL(TInt aTab);
+	TBool DoDynInitOrDeleteCommandL(CQikCommand*& aCommand, const CCoeControl& aControlAddingCommands);
+	void DoViewConstructL(CQikMultiPageViewBase* aParentView);
+	void DoHandleControlEventL(CCoeControl *aControl, MCoeControlObserver::TCoeEvent aEventType);
+	TBool ConsumeMemoryKeys(TBool aDisk, TDes& aCheckboxName, TInt& aUpKeyCode, TInt& aDownKeyCode, TInt& aLogKeyCode);
+	void Release(TBool aAppIsShuttingDown);
+
+	// From MProductPluginV2
+	void EnablePanicChecking(TBool aEnable);
+	TBool PanicCheckingIsEnabled();
+
+	// From MProductPluginV3
+	void GetFeatureUidsL(RArray<TUid>& aUids);
+
+	// From MProductPluginV4
+	TBool ConsumeMemoryKeys(TBool aDisk, TDes& aCheckboxName, TInt& aUpKeyCode, TInt& aUpScanCode, TInt& aDownKeyCode, TInt& aDownScanCode, TInt& aLogKeyCode, TInt& aLogScanCode);
+	
+	// Internal
+	void EcomChangedL();
+	void ConstructL();
+	void DestroyPlugins();
+	void RescanPluginsL();
+	void LoadPluginL(TUid aImplUid, TInt aVersion);
+	void DisablePanicCheckPushL(); // Disables panic checks, pushes an item onto the cleanupstack that restores them
+	static void EnablePanicCheck(TAny* aSelf);
+
+private:
+	REComSession iEcom;
+	RImplInfoPtrArray iEcomPluginList;
+	RPointerArray<MProductPlugin> iPlugins;
+	MProductPluginV1* iPluginForThisDevice; // Not owned, may be NULL. Is explicitly typed to be MProductPluginV1 to remind people they have to check the version before calling any non-V1 functions
+	TInt iPluginForThisDeviceVersion; // Will be 0 if iPluginForThisDevice == NULL
+	RArray<TUid> iPluginDestructors;	
+	TCallBack iPluginsChangedCallback;
+	CEcomWatcher* iEcomChangeWatcher;
+	CQikMultiPageViewBase* iParentView;
+	TBool iShuttingDown;
+	};
+
+#ifdef __DLL__
+#define gPlugin ((CDefaultProductPlugin*)Dll::Tls())
+#else
+extern CDefaultProductPlugin* gPlugin;
+#endif
+
+void StartProfilerL();
+TBool IsProfilerRunning();
+void StopProfiler();
+
+TUint CriticalToFlags(User::TCritical aCrit);
+User::TCritical FlagsToCritical(TUint aFlags);
+
+
+#endif