messagingapp/msgappfw/plugins/previewplugin/inc/ccspreviewpluginhandler.h
changeset 37 518b245aa84c
child 48 4f501b74aeb1
--- /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 <msvapi.h>
+#include <f32file.h>
+#include <thumbnailmanager.h>
+#include <thumbnailmanagerobserver.h>
+#include <thumbnaildata.h>
+#include <sqldb.h>
+
+//USER INCLUDES
+#include <ccsdefs.h>
+#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<TMsvAttachmentId>* 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<TMsvAttachmentId>* 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<ThumbnailRequestData> 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_