harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h
changeset 2 208a4ba3894c
child 9 4a2987baf8f7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/harvesterplugins/messaging/smsmms/inc/cmessagemonitor.h	Mon May 03 12:32:15 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Copyright (c) 2010 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:  
+*
+*/
+
+
+#ifndef CMESSAGEMONITOR_H
+#define CMESSAGEMONITOR_H
+
+//  INCLUDES 
+
+#include <e32base.h>
+#include <msvapi.h>
+#include "cmessageplugin.h"
+#include <common.h>
+
+// FORWARD DECLARATIONS
+
+class CMessageMonitor : public CActive
+  	{
+	public:
+		/**
+		* NewL
+		* @return
+		*/
+		static CMessageMonitor* NewL(  CMessagePlugin& aMessagePlugin, CMsvSession& aSession );
+
+		/**
+		* Destructor
+		*/
+		virtual ~CMessageMonitor();
+				
+		/**
+		 * HandleMsgMovedL handle a moved message
+		 */
+		void HandleMsgMovedL( const TMsvId aNewFolderId, 
+							  const TMsvId aOldFolderId, 
+							  const CMsvEntrySelection& aSelection );
+
+		/**
+		 * HandleMsgCreatedChangedL handles a new or changed message
+		 * @param CMsvEntrySelection aSelection list of messages TMsvIds that have changed
+		 * @param TMsvId aFolderId Folder that contains these changed messages
+		 * @param MMsvSessionObserver::TMsvSessionEvent aEvent type of event, not used currently
+		 */	
+	    void HandleMsgCreatedChangedL( const CMsvEntrySelection& aSelection,
+                                          	        const TMsvId aFolderId,
+                                          	        const MMsvSessionObserver::TMsvSessionEvent aEvent );
+	    
+		/**
+		 * HandleMsgCreatedChangedL handles a deleted message
+		 * @param CMsvEntrySelection aSelection list of messages TMsvIds that have been deleted
+		 */		
+        void HandleMsgDeletedL( const CMsvEntrySelection& aSelection );
+        
+	protected:
+		/** 
+		 * inherited from CActive
+		 */
+		void RunL();
+		void DoCancel();
+		TInt RunError(TInt aError);
+        
+	private:
+
+		/**
+		* From Constructor
+		*/
+		CMessageMonitor(  CMessagePlugin& aMessagePlugin, CMsvSession& aSession );
+		
+		/**
+		* 2nd phase construction
+		*/
+		void ConstructL();
+
+		/**
+		 * OverwriteOrAddToQuereL is a helper for MessageItemL. Adds only unique TMsvId's to the processing queue.
+		 * @param TMsvId aMsvId message to be added to the list
+		 * @param TCPixActionType aAction action type to be added to the list
+		 * @param TMsvId aFolderId id of the folder where message is located
+		 */
+		void OverwriteOrAddToQuereL(TMsvId aMsvId, TCPixActionType aAction, TMsvId aFolderId);
+		
+		/**
+		 * MessageItemL adds a message to the delayed queue, and schedules the RunL
+		 * @param TMsvId aMsvId message to be added to the list
+		 * @param TCPixActionType aAction action type to be added to the list
+		 * @param TMsvId aFolderId id of the folder where message is located
+		 */
+		void MessageItemL(TMsvId aMsvId, TCPixActionType aAction, TMsvId aFolderId);
+
+	private:
+		enum TState 
+		{ 
+			EStateNone = 0, 
+			EStateWaiting 
+		};
+		
+		struct TMessageRecord 
+		{
+			TMsvId iMsvId;
+			TCPixActionType iAction;
+			TMsvId iFolderId;
+		};
+	
+	private:
+		// Queue of documents to be indexed
+		RArray<TMessageRecord> iMessages; 
+		
+		// State machine's state
+		TState iState;
+
+		// Timer which is used to delay indexing messages
+		RTimer iTimer;
+		
+		CMsvSession&		iMsvSession;
+		CMessagePlugin&      iMessagePlugin;
+	};
+
+#endif //  CMESSAGEMONITOR_H