diff -r 000000000000 -r 72b543305e3a mobilemessaging/postcard/postcardinc/PostcardOperationInsertImage.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/postcard/postcardinc/PostcardOperationInsertImage.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,251 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: +* +* Description: +* CPostcardOperationInsertImage, asynchronous operation for inserting image +* +*/ + + + + +#ifndef __POSTCARDOPERATIONINSERTIMAGE_H +#define __POSTCARDOPERATIONINSERTIMAGE_H + +// INCLUDES + +#include +#include +#include + +#include + +#include + +#include "PostcardOperation.h" + +// CONSTANTS + +// MACROS + +// FORWARD DECLARATIONS +class CMsgMediaInfo; +class MIHLFileImage; +class MIHLBitmap; +class MIHLImageViewer; + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// CLASS DECLARATION + +/** +* CPostcardOperationInsertImage +* +* @lib postcardeditor.exe +* @since 3.0 +*/ +class CPostcardOperationInsertImage : public CPostcardOperation, + public MUniImageProcessorCallback, + public MIHLViewerObserver + { + + public: // New methods + + /** + * Factory method that creates this object. + * @since 3.0 + * @param aInfo - info object of the inserted image -> operation takes the ownership + * @return Pointer to instance + */ + static CPostcardOperationInsertImage* NewL( + MPostcardOperationObserver& aObserver, + CPostcardDocument& aDocument, + CPostcardAppUi& aAppUi, + CMsgImageInfo* aInfo, + RFs& aFs ); + + /** + * Destructor + */ + virtual ~CPostcardOperationInsertImage( ); + + /** + * Just initializes the iLaunchStep and completes + */ + void Start( TInt aArgument ); + + public: // From ImageProcessor + + /* + * If process was not succesfull -> sets error and completes with it, + * Otherwise start scaling to screen + */ + void ImageProcessingReady( TSize aBitmapSize, TInt aFileSize, TBool aCompressed ); + + protected: // From MIHLViewerObserver + + /** + * From MIHLViewerObserver Notifies client when image handler content has changed. + * Leave situation is handled in ViewerError() callback. + * + * Creates a duplicate of iDestinationBitmap, creates a CGulIcon of it and + * passes it to AppUi class + * @return void + */ + void ViewerBitmapChangedL(); + + /** + * From MIHLViewerObserver Notifies client if error occurs in viewer. + * + * @param aError IN System wide error code. + * + * @return void + */ + void ViewerError( TInt aError ); + + private: + + /** + * Called by RunL. + * Calls different functions according to iLaunchStep + */ + void DoLaunchStepL( ); + + /** + * Removes possible old image. + * Starts creating new attachment + */ + void DoCreateAttaL( ); + + /** + * This functions starts the image process + */ + void DoStartProcessImageL( ); + + /** + * Sets the mimetypes and content location. + * Stores headers + */ + void DoFinalizeSaveL( ); + + /** + * Starts the scaling process by using ImageHandler Library (scaling to bitmap, not file) + */ + void DoCreateBitmapL( ); + + /** + * Renames the attachment. + * Called when the image needs no other special handling than just renaming. + */ + void DoRenameAttaL( ); + + /** + * Returns ETrue if compression is needed for the image + */ + TBool NeedsCompress( ); + + /** + * From CActive + */ + void DoCancel( ); + + /** + * From CActive + */ + void RunL( ); + + /** + * From CActive + */ + TInt RunError( TInt aError ); + + protected: + + /** + * Constructor. + */ + CPostcardOperationInsertImage( + MPostcardOperationObserver& aObserver, + CPostcardDocument& aDocument, + CPostcardAppUi& aAppUi, + CMsgImageInfo* aInfo, + RFs& aFs ); + + /** + * 2nd phase constructor. + */ + void ConstructL( ); + + protected: // data + + /** + * Every operation starts with EPostcardInsertImageCreateAtta + * + * If image is only converted/scaled, this is needed: + * EPostcardInsertImageConvert (callback ScalingReady) + * + * If image is only compressed, this is needed: + * EPostcardInsertImageCompress + * + * If image is first scaled and then compressed + * EPostcardInsertImageConvert (callback ScalingReady) + * EPostcardInsertImageCreateAttaAfterConvertForCompress + * EPostcardInsertImageCompress (callback CompressionReady) + * EPostcardInsertImageDeleteTempAtta + * + * If image is not specifically processed, this is needed: + * EPostcardInsertImageRename + * + * In the end EPostcardInsertImageFinalizeSave where the changes are commited. + * And EPostcardInsertImageCreateBitmap creates the bitmap to be shown in the screen + * + */ + + enum TPostcardInsertImageState + { + EPostcardInsertImageInitializing = 0, + EPostcardInsertImageCheckAttas, + EPostcardInsertImageCreateAtta, + EPostcardInsertProcessImage, + EPostcardInsertImageRename, + EPostcardInsertImageFinalizeSave, + EPostcardInsertImageCreateBitmap, + EPostcardInsertImageFinished, + EPostcardInsertImageError + }; + + enum TPostcardInsertImageFlags + { + EPostcardInsertImageConvertingImage = 1, + EPostcardInsertImageRequestActive = 2 + }; + + CMsgImageInfo* iInfo; // ImageInfo given when this instance is constructed + + RFile* iCompressFile; // RFile created when the file is being compressed/processed + CMsvAttachment* iScaleAtta; // Attachment file for scaled file + CMsvAttachment* iCompressAtta; // Attachment file for compressed file + CMsvAttachment* iNoOpAtta; // Attachment file for images that need no special handling + + CUniImageProcessor* iImageProcessor; // Image processor + + MIHLFileImage* iSourceImage; // source image for scaling to bitmap + MIHLBitmap* iDestinationBitmap; // scaled MIHL bitmap + MIHLImageViewer* iImageHandler; // image handler for scaling + + TInt iFlags; + }; + +#endif // __PostcardOperationInsertImage_H