testexecfw/useremul/inc/ImageCapture.h
changeset 0 3e07fef1e154
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testexecfw/useremul/inc/ImageCapture.h	Mon Mar 08 15:03:44 2010 +0800
@@ -0,0 +1,204 @@
+/*------------------------------------------------------------------
+ -
+ * 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: ImageCapture.h
+ * 
+ * Created: 13/08/2009
+ * Author(s): Marcell Kiss, Reshma Sandeep Das
+ *   
+ * Description:
+ * Active object implementation for Image capture
+ *------------------------------------------------------------------
+ -
+ *
+ */
+#ifndef IMAGECAPTURE_H_
+#define IMAGECAPTURE_H_
+
+//System Includes
+#include <e32base.h>
+#include <ImageConversion.h>
+
+//User Includes
+#include "Settings.h"
+
+/**
+ * MScreenshotObserver, an observer to CImageCapture class.
+ */
+class MScreenshotObserver
+{
+public:
+	/**
+	 * Function that gets called to perform the next action after saving an image
+	 * @param aInterval duration after which the next action is performed 
+	 */
+    virtual void PerformNextAction(TInt aInterval) = 0;
+};
+
+/**
+ * CImageCapture
+ * Class that handles image capturing functionality
+ */
+class CImageCapture : public CActive
+{
+public:
+	/**
+	 * States of the Image capture active object
+	 */
+	enum TScreenShotStatus
+	{
+		EIdle,
+		EWaiting,
+		ECapturing,
+		ESaveComplete
+	};
+	
+   /**
+	* Static constructor.	 
+	* @param aSettings A reference to the CSettings class
+	* @param aObserver A reference to the MScreenshotObserver class
+	* @param aEikonEnv A refernce to the CEikionEnv class	
+	* @return CImageCapture* A pointer to the newly alocated CImageCapture class.
+	*                          NULL, if the class cannot be created
+	*/
+	static CImageCapture* NewL(CSettings& aSettings,MScreenshotObserver& aObserver, CEikonEnv* aEikonEnv);
+   /**
+	* Static constructor. On return the instance is left to the CleanupStack
+	* @param aSettings A reference to the CSettings class
+	* @param aObserver A reference to the MScreenshotObserver class
+	* @param aEikonEnv A refernce to the CEikionEnv class	
+	* @return CImageCapture* A pointer to the newly alocated CImageCapture class.
+	*                          NULL, if the class cannot be created
+	*/
+	static CImageCapture* NewLC(CSettings& aSettings,MScreenshotObserver& aObserver, CEikonEnv* aEikonEnv);
+		
+	/**
+	 * Destructor
+	 */
+	~CImageCapture();
+     
+	/**
+	 * Function to start capturing images. This function waits until the 
+	 * application UID passed matches with the foreground running application UID
+	 * If NULL UID is passed, the Image capturer will not wait and continues the 
+	 * image saving operation  
+	 * @param aName file path
+	 * @param aXmlFileName name of the script file
+	 * @param aAppUid application UID
+	 */
+     void CaptureL(const TDesC& aName, const TDesC& aXmlFileName, TUid aAppUid);
+
+private:
+   /**
+	* Constructor
+	* @param aSettings A reference to the CSettings class
+	* @param aObserver A reference to the MScreenshotObserver class
+	* @param aEikonEnv A refernce to the CEikionEnv class	
+	*/
+	CImageCapture(CSettings& aSettings,MScreenshotObserver& aObserver, CEikonEnv* aEikonEnv);
+	
+	/**
+	 * ConstructL
+	 */
+	void ConstructL();
+	
+	/**
+	 * Function to start capturing images.
+	 * 
+	 */
+	void DoCaptureL();
+	
+	/**
+	 * Function that saves images
+	 * aName Screenshot name
+	 */
+	void DoSaveL(const TDesC& aName);
+	/**
+	 * Gets the file name. This function checks if the filename
+	 * already exists on the phone or not. This function prevents 
+	 * the capturer overriding the existing file. 
+	 * aName Screenshot name
+	 */	
+    HBufC* GetNextFileNameLC(const TDesC& aName) const;
+	    
+   /**
+	* Fires an event.
+	* @param aStatus Image Capture Active objects status
+	*/
+	void Fire(TScreenShotStatus aStatus);
+
+   /**
+	* Fires capture event after aTime.
+	* @param aTime time interval
+	*/
+	void FireCapture(TTimeIntervalMicroSeconds32 aTime);
+
+private: //From CActive
+   /**
+	* Cancels any outstanding request.
+	*/
+	void DoCancel();
+	
+   /**
+	* Handles the completion of the active request.
+	*/
+	void RunL();
+ 
+private:        
+   /**
+	* Handle to the CImageEncoder class
+	*/ 
+	CImageEncoder*       iImageEncoder;
+   /**
+	* Handle to the CFbsBitmap class
+	*/ 
+	CFbsBitmap* 	     iBitmap;
+   /**
+	* Handle to the CSettings class
+	*/
+	CSettings&           iSettings;
+   /**
+	* Enumeration with different 
+	* states of the Image capture active object
+	*/
+	TScreenShotStatus    iScreenShotStatus;
+   /**
+	* Timer handle 
+	*/
+	RTimer               iTimer;
+   /**
+	* Screenshot file name
+	*/	
+	TBuf<KPATHLEN>       iFileName;
+   /**
+	* XML script name
+	*/
+	TBuf8<KPATHLEN>		 iXmlFileName;
+   /**
+	* Application UID
+	*/	
+	TUid                 iAppUid;
+   /**
+	* Handle to CEikonEnv class
+	*/
+	CEikonEnv* 			 iEEnv;
+   /**
+	* Reference to the MScreenshotObserver class
+	*/	
+	MScreenshotObserver& iObserver;
+};
+
+#endif /*IMAGECAPTURE_H_*/