diff -r 000000000000 -r 72b543305e3a messagingappbase/sendui/mmsdirectupload/inc/MDUCreateAndSend.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/sendui/mmsdirectupload/inc/MDUCreateAndSend.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,382 @@ +/* +* Copyright (c) 2002-2004 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: Creates and sends as many MMS messages as there are files +* to be send. Oversize JPEG images are compressed to fit into +* message. +* +*/ + + + + +#ifndef MDUCREATEANDSEND_H +#define MDUCREATEANDSEND_H + +// INCLUDES +#include +#include +#include +#include +#include +#include + +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES +class TMsvSessionEvent; +class CSendUiDataUtils; +class CSendUiAttachment; +class CSendUiSingleton; + +// CLASS DECLARATION +/** +* Callback mixin class used by CMDUCreateAndSend +* @lib MmsDirectUpload +* @since Series 60 2.8 +*/ +class MMDUCreateAndSendCallback + { + public: + + /** + * Callback function called when message creation is completed. + * If an error occured, it can be queried with + * CMDUCreateAndSend::Error() function. + * @since Series 60 2.8 + * @return None. + */ + virtual void MessagesReady() = 0; + }; + +/** +* Creates and sends as many MMS messages as there are files to be send. +* Oversize JPEG images are compressed to fit into message. +* +* @lib MmsDirectUpload +* @since Series 60 2.8 +*/ +class CMDUCreateAndSend : public CActive, + public MProgressDialogCallback, + public MUniImageProcessorCallback + + { + + public: // Constructor and destructor + + /** + * Two-phased constructor. + * @param aCallback Callback implementation. + */ + static CMDUCreateAndSend* NewL( + CCoeEnv& aCoeEnv, + CSendUiSingleton& aSingleton, + MMDUCreateAndSendCallback* aCallback ); + + /** + * Two-phased constructor. + * @param aCallback Callback implementation. + */ + static CMDUCreateAndSend* NewLC( + CCoeEnv& aCoeEnv, + CSendUiSingleton& aSingleton, + MMDUCreateAndSendCallback* aCallback ); + + /** + * Destructor. + */ + virtual~CMDUCreateAndSend(); + + public: // New functions + + /** + * Creates and sends as many MMS messages as there are files + * to be send. Oversize JPEG images are compressed to fit into + * message. Asynchronous operation. + * + * @since Series 60 2.8 + * @param aAttachments, Files to be send. + * @param aToAddress, Recipient address. + * @param aToAlias, Alias for recipient. + * @param aMaxMsgSize, Maximum size of the created MMS. + * @return None. + */ + void CreateAndSendL( + CArrayPtrFlat* aAttachments, + const TDesC& aToAddress, + const TDesC& aToAlias, + TInt aMaxMsgSize ); + + /** + * Error. + * @since Series 60 2.8 + * @return Symbian wide error code. + */ + inline TInt Error() const; + + /** + * Can be used to query compression results. + * Oversized JPEG images are compressed to fit in MMS. + * @since Series 60 2.8 + * + * @param aCompressionOk, Return value contains amount of succesfully + * compressed JPEG images. + * @param aCompressionFail, Return value contains amount of failed + * compression attempts. + * @return None. + */ + inline void CompressionResults( + TInt& aCompressionOk, + TInt& aCompressionFail ) const; + + private: // Constructor + + /** + * C++ default constructor. + */ + CMDUCreateAndSend( CCoeEnv& aCoeEnv, CSendUiSingleton& aSingleton, MMDUCreateAndSendCallback* aCallback ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + private: // Functions from base classes + + /** + * From CActive + * @since Series 60 2.8 + * @return None. + */ + void RunL(); + + /** + * From CActive + * @since Series 60 2.8 + * @return None. + */ + void DoCancel(); + + /** + * From CActive + * Handles a leave occurring in the request completion + * event handler RunL(). + * @since Series 60 2.8 + * @param aError Leave code. + * @return + */ + TInt RunError( TInt aError ); + + /** + * From MProgressDialogCallback + * Callback method + * Get's called when a dialog is dismissed. + * @since Series 60 2.8 + * @return None. + */ + void DialogDismissedL( TInt aButtonId ); + + /** + * From MUniImageProcessorCallback. + * Callback to tell that compression is ready. + * @since 3.2 + * @param aBitmapSize Dimensions of result bitmap - not interested. + * @param aFileSize Size of the compressed image + * @param aCompressed ETrue if compressed, EFalse if only scaled - not interested. + * @return None. + */ + void ImageProcessingReady( TSize aBitmapSize, TInt aFileSize, TBool aCompressed ); + + private: // New functions + + /** + * Starts message entry creation. + * @since Series 60 3.0 + * @return None. + */ + void CreateMessageAndSetDataL(); + + /** + * Checks if file is oversized JPEG image. + * @since Series 60 2.8 + * @return ETrue if image should be compress, otherwise EFalse. + */ + TBool IsCompressionNeededL(); + + /** + * Compress oversized JPEG image. + * @since Series 60 2.8 + * @return None. + */ + void CompressImageL(); + + /** + * Add attachment to message. + * @since Series 60 2.8 + * @return None. + */ + void AddAttachmentL(); + + /** + * Sends message. + * @since Series 60 2.8 + * @return None. + */ + void SendMessage(); + + /** + * Deletes temporary compressed image file if needed and + * updates progress bar. + * @since Series 60 2.8 + * @return None. + */ + void FinalizeL(); + + /** + * Creates temp file to ram drive d:\. Original filename is used. + * Note: handle to created file is left open. + * @since Series 60 3.0 + * @param aSourceFile File handle to the original file. + * @param aTargetFile Return value contains the target file handle. + * @return None. + */ + void CreateTempFileL( + RFile& aSourceFile, + RFile& aTargetFile ); + + /** + * Shows progress bar to user. Progress bar indicates the total amount + * of messages to be created and the current situation. + * @since Series 60 2.8 + * @param aFinalValue Final value for the progress bar. + * @return None. + */ + void CreateProgressNoteL( TInt aFinalValue ); + + /** + * Updates the progress bar text. + * @since Series 60 2.8 + * @param aFinalValue Final value for the progress bar. + * @return None. + */ + void UpdateProgressTextL( TInt aFinalValue ); + + /** + * Checks that message server is up and running. + * Also checks that message store is available. + * @since Series 60 2.8 + * @return TBool ETrue if session to message server is ok and message + * store is available, otherwise EFalse. + */ + TBool CheckMmsServiceAvailabilityL(); + + /** + * Shows requested information note. + * @since Series 60 3.2 + */ + //void ShowInformationNoteL( TUint aTextResourceId ) const; + + /** + * Resets the internal state. + * @return None. + */ + void Reset(); + + /** + * Complete request. + * @return None. + */ + void CompleteSelf(); + + private: //Data + + enum TInternalState + { + EStateIdle = 0, + EStateCreateMessage, + EStateImageCompression, + EStateAddAttachment, + EStateSendMessage, + EStateFinalize, + EStateReady + }; + + // Session to SendAs server. Owned. + RSendAs iSendAsSession; + + // Offers message creation and sending services. Owned. + RSendAsMessage iSendAsMessage; + + // Progress dialog for creating messages. Owned. + CAknProgressDialog* iProgressDialog; + + // Progress info. + CEikProgressInfo* iProgressInfo; + + // Attachments for the messages. Not owned. + const CArrayPtrFlat* iAttachments; + + CCoeEnv& iCoeEnv; + + CSendUiSingleton& iSingleton; + + // Reference to an open fileserver session + RFs& iFs; + + MMDUCreateAndSendCallback* iCallback; + + // Image compressor. Owned. + CUniImageProcessor* iCompressor; + + HBufC* iToAddress; + + HBufC* iToAlias; + + RFile iCompressedImage; + TFileName iCompressedImagePath; + TDataType iAttachmentType; + TInt iState; + TInt iError; + TInt iProgressCount; + TInt iMessageCount; + TInt iMaxMsgSize; + TInt iAttachmentSize; + TInt iCompressionOk; + TInt iCompressionFail; + TBool iImageCompressed; + TBool iMessageCreated; + + }; + +// ========================================================== + +inline TInt CMDUCreateAndSend::Error() const + { + return iError; + } + +inline void CMDUCreateAndSend::CompressionResults( + TInt& aCompressionOk, + TInt& aCompressionFail ) const + { + aCompressionOk = iCompressionOk; + aCompressionFail = iCompressionFail; + } + +#endif // MDUCREATEANDSEND_H