testexecfw/useremul/inc/GlobalCapturer.h
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/useremul/inc/GlobalCapturer.h	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,238 @@
+/*------------------------------------------------------------------
+ -
+ * Software Name : UserEmulator
+ * Version       : v4.2.1309
+ * 
+ * Copyright (c) 2009 France Telecom. All rights reserved.
+ * This software is distributed under the License 
+ * "Eclipse Public License - v 1.0" the text of which is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * France Telecom 
+ *
+ * Contributors:
+ *------------------------------------------------------------------
+ -
+ * File Name: GlobalCapturer.h
+ * 
+ * Created: 13/08/2009
+ * Author(s): Marcell Kiss, Reshma Sandeep Das
+ *   
+ * Description:
+ *  Key capturing class
+ *------------------------------------------------------------------
+ -
+ *
+ */
+ 
+#ifndef GLOBALKEYCAPTURE_H__
+#define GLOBALKEYCAPTURE_H__
+
+// System Includes
+#include <e32base.h>
+#include <w32std.h>
+#include <aknglobalnote.h>
+#include <COECNTRL.H>
+// User Includes
+#include "Settings.h"
+#include "clientcommander.h"
+#include "CameraAppTimer.h"
+#include "Constants.h"
+
+// Forward declarations
+class RWindowGroup;
+class CApaWindowGroupName;
+
+// Class Declarations
+/**
+ * Key observer interface class
+ */
+class MKeyObserver
+{
+public:
+    /**
+    * Callback to handle Power key button press and stops scripts
+    */
+	virtual void TerminationKeyReceived()   = 0;
+	/**
+    * Callback to notify AppUi to bring app to foreground
+    */
+	virtual void BringUserEmulatorToFront() = 0;
+	/**
+    * Stops random test by this callback function
+    */
+	virtual void RandomTestEndsL() = 0;
+};
+
+/** 
+ * Registers itself for event capturing.
+ * Is notified about events via CActive calls
+ */
+class CGlobalCapturer : public CActive, public MCameraAppObserver
+{
+	public:
+	    /**
+        * Static constructor
+        * @param aObserver Reference key press observer
+        * @param aSettings Reference to Setting class
+        * @param aScriptRun Reference to script run flag from AppUi
+        * @param aRandomTestStarted Reference to random test started flag from AppUi
+        * @param aClientCommander Reference to client commander client side object
+        * @param aEikonEnv Reference to controls environment
+        * @param aSession Reference to session with the application architecture server.
+        * @return CGlobalCapturer* A pointer to the newly allocated CGlobalCapturer class.
+        *                      NULL, if the class cannot be created
+        */
+		static CGlobalCapturer* NewL(MKeyObserver& aObserver, CSettings& aSettings, TBool& aScriptRun, 
+				TBool& aRandomTestStarted, RClientCommander& aClientCommander, CEikonEnv* aEikonEnv,RApaLsSession& aSession);
+
+	   /** 
+         * Destructor
+         */
+		~CGlobalCapturer();
+		
+	   /** 
+		 * Registers itself for the key press event
+		 */
+		void StartCapturingL();
+				
+       /** 
+        * Starts capturing Power button
+        */
+		void StartL();
+	   /** 
+        * Stops capturing Power button
+        */
+		void Stop();
+	   /** 
+        * Stops capturing keys (in Window server)
+        */
+	    void StopRecordKeysL();
+	   /** 
+        * Starts capturing keys by Window server
+        */
+	    TInt StartRecordKeysL();
+	   /** 
+        * Checks if camera app is in memory or not
+        */
+	    void CheckCameraAppL();
+	   /** 
+        * Resets Menu screen and (Home screen's) idle screen
+        */
+		TInt ScreenReset();
+	   /** 
+        * Kill apps (with exceptions)
+        */
+		void KillUnwantedAppsResetL();
+		
+	private: //From CActive
+		/**
+		 * Is called by active scheduler when key press happens
+		 */
+		void RunL();
+
+		/**
+		 * Is called when event listening should be stopped
+		 */
+		virtual void DoCancel();
+	
+	private:
+	   /**
+		* Constructor
+		* @param aObserver Reference key press observer
+		* @param aSettings Reference to Setting class
+		* @param aScriptRun Reference to script run flag from AppUi
+		* @param aRandomTestStarted Reference to random test started flag from AppUi
+		* @param aClientCommander Reference to client commander client side object
+		* @param aEikonEnv Reference to controls environment
+		* @param aSession Reference to session with the application architecture server
+		*/
+		CGlobalCapturer(MKeyObserver& aObserver, CSettings& aSettings, TBool& aScriptRun, TBool& aRandomTestStarted,
+				RClientCommander& aClientCommander, CEikonEnv* aEikonEnv,RApaLsSession& aSession);
+				
+	   /**
+        * Second phase constructor
+        */
+		void ConstructL();
+		
+	   /**
+        * Filters characters which shouldn't be in a file name
+        */
+		TBool StrictFileNameCheck(const TDesC& aFileName);
+			
+	public:
+	   /**
+        * Flag. True if recording is running
+        */
+	    TBool		iRecord;
+		
+	private:
+	   /**
+        * Handler to Power button
+        */
+		TInt32 iCaptureHandle1;
+	   /**
+        * Session to the window server
+        */
+		RWsSession    iWsSession;
+	   /**
+        * Window group object
+        */
+		RWindowGroup* iWindowGroup;
+	   /**
+        * Key event details structure
+        */
+		TKeyEvent*		iKeyEvent;
+	   /**
+        * Handle to the capturing request
+        */
+		MKeyObserver& 	iObserver;
+	   /**
+        * Reference to settings
+        */
+		CSettings& 		iSettings;
+	   /**
+        * A handle to a file server session
+        */
+		RFs 			iFs;
+	   /**
+        * Reference to script run flag
+        */
+		TBool&			iScriptRun;
+	   /**
+        * Reference to randomtest started flag
+        */
+		TBool&			iRandomTestStarted;
+	   /**
+        * Flag. True if key capturing started
+        */
+		TBool			iKeyCaptureStart;
+	   /**
+        * Reference to client commander object
+        */
+		RClientCommander& iClientCommander;
+	   /**
+        * Buffer for script name and path
+        */
+		TBuf8<512> 		iBuf8;
+	   /**
+        * Reference to controls environment
+        */
+		CEikonEnv* 		iEEnv;
+	   /**
+        * Reference to camera timer
+        */
+		CCameraAppTimer* iCameraAppTimer;
+	   /**
+        * Buffer for app's name which are in foreground. 
+        */
+		TBuf8<512> 		iAppName;
+	   /**
+        * Reference to session with the application architecture server
+        *
+        */
+		RApaLsSession&	iSession;
+};
+
+#endif //	GLOBALKEYCAPTURE_H__