diff -r 84d9eb65b26f -r 518b245aa84c messagingapp/msgappfw/plugins/previewplugin/inc/ccspreviewpluginhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgappfw/plugins/previewplugin/inc/ccspreviewpluginhandler.h Fri Jun 25 15:47:40 2010 +0530 @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2007 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: Message Preview Handler + * + */ + +#ifndef _C_CS_PREVIEW_PLUGIN_HANDLER_H_ +#define _C_CS_PREVIEW_PLUGIN_HANDLER_H_ + +//SYSTEM INCLUDES +#include +#include +#include +#include +#include +#include + +//USER INCLUDES +#include +#include "ccspreviewplugin.h" +#include "UniDataModel.h" + +// FORWARD DECLARATION +class CCsPlugin; +class CMsvSession; +class MCsPluginEventObserver; +class MMsvSessionObserver; +class CCsConversationEntry; +class CCsPreviewPlugin; +class CClientMtmRegistry; +class CMmsClientMtm; +class CUniDataModel; +class MMsvAttachmentManager; + +enum MmsConformanceCheckErrors +{ + EInsertSuccess = 0, EInsertQueryAbort, EInsertNotSupported +}; + +/* + * Thumbnail Request Data + */ +struct ThumbnailRequestData + { + /* + * Request Id + */ + TThumbnailRequestId iRequestId; + + /* + * Message Id + */ + TMsvId iMsgId; + }; + +/** + * This class interacts with MsvServer to fetch message data + */ +class CCsPreviewPluginHandler : public CBase, + public MMsvSessionObserver, + public MUniDataModelObserver, + public MThumbnailManagerObserver + { + +public: + + /** + * Two phase construction + */ + static CCsPreviewPluginHandler* NewL(CCsPreviewPlugin *aMsgObserver); + + /** + * Destructor + */ + virtual ~CCsPreviewPluginHandler(); + +public: + //MMsvSessionObserver + /** + * Handles the MsvServer updates. Implemented for MMsvSessionObserver + */ + void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, + TAny* aArg2, TAny* aArg3); + +public: + //MUniDataModelObserver + /** + */ + void RestoreReady(TInt aParseResult, TInt aError); + +public: + // Callbacks from MThumbnailManagerObserver for getting thumbnails + void ThumbnailPreviewReady(MThumbnailData& aThumbnail, + TThumbnailRequestId aId); + + void ThumbnailReady(TInt aError, MThumbnailData& aThumbnail, + TThumbnailRequestId aId); + +public: + + /* + * Compare by request Id. + */ + static TBool CompareByRequestId(const ThumbnailRequestData& aFirst, + const ThumbnailRequestData& aSecond); + +private: + + /** + * Constructor + */ + CCsPreviewPluginHandler(); + + /** + * 2nd phase construtor + */ + void ConstructL(CCsPreviewPlugin *aMsgPlugin); + + /** + * Process each entry + *@param aSelection, CMsvEntrySelections + */ + void HandleEventL(CMsvEntrySelection* aSelection); + + /** + * Bind bodytext to sql statement. + *@param sqlStmt, RSqlStatement + *@param attachmentId, TMsvAttachmentId + */ + void BindBodyText(RSqlStatement& sqlStmt, TMsvAttachmentId attachmentId); + + /** + * Get Thumbnail data from attachment + *@param attachmentId, TMsvAttachmentId + *@param mimeType, + *@param msgId, message id + */ + void GetThumbNailL(TMsvAttachmentId attachmentId, TDesC8& mimeType, + TMsvId msgId); + + /* + * Process Thumbnail data + * @param aThumbnail MThumbnailData + * @param aId TThumbnailRequestId + */ + void HandleThumbnailReadyL(MThumbnailData& aThumbnail, + TThumbnailRequestId aId); + + /** + * Validates if message can be forwarded + * The validation checks include slide count check,MMS size check and + * media conformance checks and this fucntion should be called only for mms + * @param aUniDataModel, instance of unidatamodel + * @return true if message can be forwarded + * false if message cant be forwarded + */ + TBool ValidateMsgForForward(CUniDataModel* aUniDataModel); + + /** + * This shall return the particular slide attachments ids + * @param aSlideNum slide count + * @param aUniDataModel instance of unidatamodel + * @return array of attachment id's + */ + RArray* GetSlideAttachmentIds( + TInt aSlideNum, + CUniDataModel* aUniDataModel); + + /** + * This shall return list of attachment id's + * @param aUniDataModel instance of unidatamodel + * @return array of attachment id's + */ + RArray* GetAttachmentIdList( + CUniDataModel* aUniDataModel); + + /** + * This shall check the insert mode for the attachment file + * @param aFileHandle instance of file handle + * @return enum MmsConformanceCheckErrors + */ + TInt CheckModeForInsertL(RFile aFileHandle); + + /** + * Finds the message's processing state + * @param aMsgId, message id + * @return, TInt from TCsPreviewMsgProcessingState enum + */ + TInt msgProcessingState(TMsvId aMsgId); + + /** + * Sets message under processing to true + * @param aMsgId, message id + * @param aState, TInt from TCsPreviewMsgProcessingState enum + */ + void setMsgProcessingState(TMsvId aMsgId, TInt aState); + +private: + //Data + + /** + * MsvServer session object + * Own + */ + CMsvSession* iSession; + + /** + * iMsgObserver + * The Observer interface + * Not Own. + */ + CCsPreviewPlugin *iMsgObserver; + + /** + * Mtm registry object + * Own + */ + CClientMtmRegistry* iMtmRegistry; + + /** + * Mms client mtm object + * Own. + */ + CMmsClientMtm* iMmsMtm; + + /* + * File session + */ + RFs ifsSession; + + /* + * Thumbnail request array. + * Own + */ + RArray iThumbnailRequestArray; + + /* + * Thumbnail manager. + * Own + */ + CThumbnailManager* iThumbnailManager; + + /* + * Sqlite DB Handle + */ + RSqlDatabase iSqlDb; + + /** + * Max MMS Size + */ + TInt iMaxMmsSize; + + /* + * Mms creation mode + */ + TInt iCreationMode; + + /** + * Conformance status + */ + TUint32 iConfStatus; + +}; + +#endif // _C_CS_PREVIEW_PLUGIN_HANDLER_H_