--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/plugins/msgplugin/inc/ccsmsghandler.h Fri May 14 15:49:35 2010 +0300
@@ -0,0 +1,265 @@
+/*
+* 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: Request Handler plugin
+ *
+*/
+
+
+#ifndef _C_CS_MSG_REQUEST_HANDLER_H_
+#define _C_CS_MSG_REQUEST_HANDLER_H_
+
+//SYSTEM INCLUDES
+#include <msvapi.h>
+
+//USER INCLUDES
+#include "ccsmsg.h"
+#include "ccsmsgpluginutility.h"
+
+
+// FORWARD DECLARATION
+class CCsPlugin;
+class CMsvSession;
+class MCsPluginEventObserver;
+class MMsvSessionObserver;
+class CCsConversationEntry;
+class CCsMsg;
+class CCsMsgPluginUtility;
+class CClientMtmRegistry;
+class CSmsClientMtm;
+class CMmsClientMtm;
+
+/**
+ * Operation Type
+ */
+enum TEventType
+ {
+ ERead,
+ EUpdate,
+ EDelete
+ };
+
+/**
+ * States
+ */
+enum TMsgHandlerState
+ {
+ EReadInbox,
+ EReadSent,
+ EProcessDraft,
+ EReadOutbox,
+ ESortEntries,
+ EProcessEntries,
+ EComplete
+ };
+
+/**
+ * Message plugin Request Handler Class
+ * This class interacts with MsvServer to fetch message data
+ */
+class CCsMsgHandler : public CBase, public MMsvSessionObserver
+ {
+
+public:
+
+ /**
+ * Two phase construction
+ * @param aMsgObserver MCsMsgObserver interface
+ */
+ static CCsMsgHandler* NewL(MCsMsgObserver *aMsgObserver);
+
+ /**
+ * Destructor
+ */
+ virtual ~CCsMsgHandler();
+
+ /**
+ * Start
+ * This function starts the state machine to fetch msg data from msvserver
+ */
+ void StartL();
+
+public://MMsvSessionObserver
+ /**
+ * Handles the MsvServer updates. Implemented for MMsvSessionObserver
+ */
+ void HandleSessionEventL(TMsvSessionEvent aEvent,
+ TAny* aArg1,
+ TAny* aArg2,
+ TAny* aArg3);
+
+private:
+
+ /**
+ * CIdle callback
+ */
+ static TInt UploadMsg(TAny* arg);
+
+ /**
+ * State handler to read all messages
+ */
+ TInt UploadMsgL();
+
+ /**
+ * Checks if the MTM type supported
+ */
+ TBool IsMtmSupported(long uid);
+
+private:
+
+ /**
+ * Constructor
+ */
+ CCsMsgHandler();
+
+ /**
+ * 2nd phase construtor
+ * @param aMsgPlugin The main message plugin object
+ */
+ void ConstructL(MCsMsgObserver *aMsgPlugin);
+
+ /**
+ * ProcessResultsL fetches results and updates the CCsServer
+ * with the fetched data
+ */
+ void ProcessResultsL(TMsvEntry aEntry);
+
+ /**
+ * Create CCsConversationEntry and adds to the list
+ * @param aContact, Contact details
+ * @param aDescription, message body
+ * @param aEntry, TMsvEntry
+ */
+ void CreateAndAddEntryL(const TDesC& aContact,
+ const TDesC& aDescription,
+ const TMsvEntry& aEntry);
+
+ /**
+ * Process each entry
+ * @param aEvent Read, Update, Delete
+ * @param aContact (From/To) Field
+ * @param aDescription, message body
+ * @param aEntry, Message entry
+ */
+ void ProcessEntryL(TEventType aEvent,
+ const TDesC& aContact,
+ const TDesC& aDescription,
+ const TMsvEntry& aEntry);
+
+ /**
+ * Process each entry
+ *@param aSelection, CMsvEntrySelections
+ *@param aParent, parent id if TMsvEntry
+ */
+ void HandleEventL(CMsvEntrySelection* aSelection, TMsvId aParent);
+
+ /**
+ * Extracts the addresses in the to field and updates them to server
+ *@param aEntry, TMsvEntry
+ *@param aEvent Read, Update, Delete
+ *@param aFromAddress, from address of the message
+ */
+ void ExtractAddressesL(
+ TMsvEntry aEntry ,
+ TEventType aEvent,
+ RPointerArray<HBufC>& addressList);
+
+ /**
+ * Cleanup
+ */
+ void CleanupL();
+
+ /**
+ * Extracts the Message type based on the MTM value
+ * @param aEntry, TMsvEntry
+ */
+ TCsType ExtractCsType( const TMsvEntry& aEntry);
+
+private: //Data
+
+ /**
+ * MsvServer session object
+ */
+ CMsvSession* iSession;
+
+ /**
+ * Utility object
+ */
+ CCsMsgPluginUtility* iMsgPluginUtility;
+
+ /**
+ * iConverstationEntryList
+ * ConversationEntry list
+ * Own.
+ */
+ RPointerArray<CCsConversationEntry> *iConverstationEntryList;
+
+ /**
+ * iMsgObserver
+ * The Observer interface
+ * Not Own.
+ */
+ MCsMsgObserver *iMsgObserver;
+
+ /**
+ * Mtm registry object
+ */
+ CClientMtmRegistry* iMtmRegistry;
+
+ /**
+ * SMS client mtm object
+ */
+ CSmsClientMtm* iSmsMtm;
+
+ /**
+ * Mms client mtm object
+ */
+ CMmsClientMtm* iMmsMtm;
+
+ /**
+ * Previous entry, used for comparing with new entry received
+ */
+ TMsvEntry iPrevEntry;
+
+ /**
+ * Root entry
+ */
+ CMsvEntry* iRootEntry;
+
+ /**
+ * Mesage count
+ */
+ TInt iMessageCount;
+
+ /**
+ * Messages under root entry
+ */
+ CMsvEntrySelection* iMessages;
+
+ /**
+ * Master array for holding all the messages
+ */
+ RArray<TMsvId>* iMessageArray;
+
+ /**
+ * State
+ */
+ TMsgHandlerState iState;
+
+ /**
+ * Active object
+ */
+ CIdle* iIdle;
+ };
+
+#endif // _C_CS_MSG_REQUEST_HANDLER_H_