imageeditor/imageeditorApp/inc/ImageEditorImageController.h
changeset 1 edfc90759b9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/imageeditorApp/inc/ImageEditorImageController.h	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,263 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* 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:
+* Nokia Corporation - Initial contribution
+*
+* Contributors:
+* Ixonos Plc
+*
+* Description: 
+*
+*/
+
+
+
+#ifndef IMAGEEDITORIMAGECONTROLLER_H
+#define IMAGEEDITORIMAGECONTROLLER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <fbs.h>
+
+#include "ImageControllerObserver.h"
+
+
+//  FORWARD DECLARATIONS
+class CImageEditorPluginManager;
+class CImageEditorImageHandler;
+
+/*	CLASS: CImageController
+*
+*	CImageController is an active object controlling asynchronous saving
+*	and loading of images. Also, synchronous methods for renaming and deleting
+*	images can be found.
+*/
+class CImageController : public CActive
+{
+
+public:
+
+/** @name Methods:*/
+//@{
+
+	/** NewL factory method, pops cleanupstack
+	*
+	*	@param aObserver - CImageController observer instance, ownership not changed
+	*	@param aManager - CImageEditorPluginManager instance
+	*	@return pointer to created CImageController object
+	*/
+	static CImageController * NewL (
+		MImageControllerObserver *		aObserver,
+		CImageEditorPluginManager *		aManager
+		);
+
+	/** Destructor
+	*
+	*	@param -
+	*	@return -
+	*/
+	virtual ~CImageController ();
+
+	/** LoadImage
+	*
+	*	Loads image.
+	*
+	*	@param aFileName - name of the image file to be loaded
+	*	@return -
+	*/
+	void LoadImageL (const TDesC & aFileName);
+
+	/** SaveImage
+	*
+	*	Saves image 
+	*
+	*	@param aFileName - saved image name
+	*	@param aProgressCount - On return, contains the number of blocks to progress
+	*	@return -
+	*/
+	void SaveImageL (const TDesC & aFileName);
+
+    /** RenameImage
+	*
+	*	Renames image. 
+	*
+	*	@param aFileNameSrc - source image name
+	*	@param aFileNameDst - destination image name
+	*	@return KErrNone if no errors, system wide error otherwise
+	*/
+	TInt  RenameImage (
+		const TDesC	&		aFileNameSrc,
+		const TDesC	&		aFileNameDst
+		) const;
+
+	/** DeleteImage
+	*
+	*	Deletes image. 
+	*
+	*	@param aFileName - image name to be deleted
+	*	@return KErrNone if no errors, system wide error otherwise
+	*/
+	TInt DeleteImage (const TDesC & aFileName) const;
+
+	/** CreatePreviewBitmapL 
+	*
+	*	Creates the preview bitmap.
+	*
+	*	@param -
+	*	@return -
+	*/
+	void CreatePreviewBitmapL ();
+
+    /** DeletePreviewBitmap 
+	*
+	*	Deletes the preview bitmap.
+	*
+	*	@param -
+	*	@return -
+	*/
+	void DeletePreviewBitmap ();
+
+    /** CancelOperation
+	*
+	*	Cancels loading, saving or processing operation.
+	*	This does not call the AO's Cancel(), but rather waits for the nexts RunL()
+	*	to finish, and finishes after that.
+	*	
+	*	@param aOperation - the on-going operation
+	*	@return -
+	*/
+	void CancelOperation(TBool aForce = EFalse);
+
+
+//@}
+
+protected:
+
+/** @name Methods:*/
+//@{
+
+	/** DoCancel
+	*
+	*	Implements cancellation of outstanding request. This method is 
+	*	called from Cancel() of active object. Cancels asynchronous request
+	*	and returns. DOES NOT WAIT THE REQUEST TO COMPLETE.
+	*
+	*	@param -
+	*	@return -
+	*	@see CActive
+	*/
+	virtual void DoCancel();
+
+	/** RunL
+	*
+	*	Active object's request completion handler. 
+	*
+	*	Active scheduler selects this class based on class priority and
+	*	marks the status completed before calling this method. This method
+	*	should handle the completion as fast as possible and return or issue
+	*	another request.
+	*
+	*	@param -
+	*	@return -
+	*	@see CActive
+	*/
+	virtual void RunL ();
+
+
+//@}
+
+/** @name Members:*/
+//@{
+
+//@}
+
+private:
+
+/** @name Methods:*/
+//@{
+
+	/** Default constructor
+	*
+	*	@param -
+	*	@return -
+	*/
+	CImageController ();
+
+	/** Second phase constructor, may leave
+	*
+	*	@param aObserver - CImageController observer instance, ownership not changed
+	*	@param aManager - CImageEditorPluginManager instance
+	*	@return -
+	*/
+	void ConstructL (
+		MImageControllerObserver *		aObserver,
+		CImageEditorPluginManager *		aManager
+		);
+
+	/** CompleteRequest
+	*
+	*	Force RunL
+	*
+	*	@param -
+	*	@return -
+	*/
+    void CompleteRequest();
+
+	/** CalculateProgressInterval
+	*
+	*	The saving operation typically consists of thousands of blocks. 
+	*	It makes no sense to update the progress bar that often.
+	*
+	*	@param -
+	*	@return -
+	*/
+    void CalculateProgressInterval (TInt aBlockCount);
+//@}
+
+/** @name Members:*/
+//@{
+	/// Image Handler
+	CImageEditorImageHandler *	iImageHandler;
+	
+    /// Plug-in Manager
+	CImageEditorPluginManager *	iManager;
+
+	/// CImageController observer instance
+	MImageControllerObserver *	iObserver;
+
+    /// Preview bitmap
+	CFbsBitmap *				iPreview;
+
+    /// Jpeg Image
+    TBool                       iJpegImage;
+
+    /// JPEG quality
+    TInt                        iQuality;
+
+    /// Last operation
+	MImageControllerObserver::TOperationCode	iOperation;
+
+    /// Progress bar update interval (number of blocks)
+    TInt                        iProgressBarInterval;
+
+	//	Current save progress in percentage
+    TInt                        iSavedPercentage;
+
+	//	Previous save progress in percentage
+	TInt						iSavedPercentageOld;
+
+    /// Is operation cancelled
+    TBool                       iIsCancelled;
+
+//@}
+
+};
+
+
+#endif