diff -r 57d4cdd99204 -r edfc90759b9f imageeditor/imageeditorApp/inc/ImageEditorImageController.h --- /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 +#include + +#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