diff -r 84d9eb65b26f -r e4592d119491 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 May 14 15:49:35 2010 +0300 @@ -0,0 +1,203 @@ +/* + * 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 "ccspreviewplugin.h" +#include "UniDataModel.h" + +// FORWARD DECLARATION +class CCsPlugin; +class CMsvSession; +class MCsPluginEventObserver; +class MMsvSessionObserver; +class CCsConversationEntry; +class CCsPreviewPlugin; +class CClientMtmRegistry; +class CMmsClientMtm; + +/* + * 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); + +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; + }; + +#endif // _C_CS_PREVIEW_PLUGIN_HANDLER_H_