uiservicetab/vimpstengine/inc/cvimpstengineimsubservice.h
branchRCL_3
changeset 23 9a48e301e94b
parent 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstengine/inc/cvimpstengineimsubservice.h	Wed Sep 01 12:33:36 2010 +0100
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2008 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:  Class that capsulates im sub service data members
+*
+*/
+
+#ifndef __CVIMPSTENGINEIMSUBSERVICE_H
+#define __CVIMPSTENGINEIMSUBSERVICE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include "tvimpstenums.h" 
+
+//base
+#include <mimcacheeventhandler.h>
+#include "mvimpstenginecchhandlerobserver.h"
+#include "mvimpstenginesubservice.h"
+#include "mvimpstengineimsubservice.h"
+
+
+// FORWARD DECLARATIONS
+class CVIMPSTEngineServiceTableFetcher;
+class CIMCacheFactory;
+class MIMCacheAccessor;
+class MVIMPSTEngineIMSubServiceEventObserver;
+class CVIMPSTEngineCchHandler;
+class MVIMPSTEngineServiceConnectionEventObserver;
+
+
+
+//CLASS DECLARATION
+
+/**
+ * class handling im sub service
+ * @lib vimpstengine.lib
+ * @since S60 5.0 
+ */
+
+NONSHARABLE_CLASS( CVIMPSTEngineIMSubService ) : public CBase, 
+					//	public MVIMPSTEngineSubService,
+						public MVIMPSTEngineIMSubService,
+						public MIMCacheEventHandler,
+						public MVIMPSTEngineCchHandlerObserver
+	{
+	//for testcases
+    friend class T_VimpstEngineImSubService;
+
+	public:  // Two-phased constructors and destructor
+
+		/**
+		* NewLC two phase constructor.
+		* @param aServiceId - Service Id
+		* @param aCchHandler - reference to cchhandler
+		* @param aTableFetcher - Handler to SPSettings
+		* @param aServiceStateListener - Handler to the ServiceStateListener		 
+		* return @ptr to CVIMPSTEngineIMSubService
+		*/
+		static CVIMPSTEngineIMSubService* NewLC( TUint aServiceId, 
+									CVIMPSTEngineCchHandler& aCchHandler,
+									CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+									MVIMPSTEngineServiceConnectionEventObserver& aObserver  );
+
+
+		/**
+		* NewL two phase constructor.
+		* @param aServiceId - Service Id
+		* @param aCchHandler - reference to cchhandler
+		* @param aTableFetcher - Handler to SPSettings
+		* @param aServiceStateListener - Handler to the ServiceStateListener		 
+		* return @ptr to CVIMPSTEngineIMSubService
+		*/
+		static CVIMPSTEngineIMSubService* NewL( TUint aServiceId,
+									CVIMPSTEngineCchHandler& aCchHandler,
+									CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+									MVIMPSTEngineServiceConnectionEventObserver& aObserver);
+					
+		/**
+		* C++ default destructor
+		*/
+		virtual ~CVIMPSTEngineIMSubService();
+
+
+	public: //From MVIMPSTEngineSubService
+
+		/**
+		* @see MVIMPSTEngineSubService
+		*/
+		TVIMPSTEnums::TVIMPSTRegistrationState SubServiceState() const;		
+
+		/**
+		* @see MVIMPSTEngineSubService
+		*/
+		TVIMPSTEnums::SubServiceType Type() const;	
+
+
+
+	public: //From MVIMPSTIMSubService
+
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		void RegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver);
+
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		void UnRegisterChatObserver(MVIMPSTEngineIMSubServiceEventObserver* aObserver);
+
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		TInt GetUnreadCountL(const TDesC& aSender);
+
+
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		TBool IsConversationExistL(const TDesC& aRecipientId) const ;
+
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		void CloseConversationL( const TDesC& aContactId );  
+		
+		/**
+		* @see MVIMPSTIMSubService
+		*/
+		
+		RArray<SIMCacheChatItem> GetOpenChatListL();
+
+	  
+
+	public:     // From MIMCacheEventHandler
+
+		/**
+		* @see MIMCacheEventHandler
+		*/
+		void HandleIMCacheEventL(TIMCacheEventType aEventType, TAny* aChatMessage = NULL );
+
+				                       
+	private: //From MVIMPSTEngineCchHandlerObserver
+
+		/**
+		 * See MVIMPSTEngineCchHandlerObserver
+		 */    
+		void CchEventOccuredL( 
+					    TUint aServiceId, 
+					    TCCHSubserviceState aState, 
+					    TInt aServiceError );
+
+	        	
+	private:		
+
+		/**
+		* Symbian second phase constructor	
+		*/		
+		void ConstructL();
+
+		/**
+		* C++ default constructor.
+		* @param aServiceId - Service Id
+		* @param aCchHandler - reference to cchhandler
+		* @param aTableFetcher - Handler to SPSettings
+		* @param aServiceStateListener - Handler to the ServiceStateListener	
+		*/
+		CVIMPSTEngineIMSubService( TUint aServiceId,
+									CVIMPSTEngineCchHandler& aCchHandler,
+									CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+									MVIMPSTEngineServiceConnectionEventObserver& aObserver  );
+				
+		
+		/**
+		* Resolves the CCH service state to Service Tab understandable state
+		* @param aServiceId - Service Id
+		* @param aCchErr - returns the last CCH Error
+		* @return TVIMPSTRegistrationState  the Registration State		
+		*/
+		TVIMPSTEnums::TVIMPSTRegistrationState ResolveServiceStateL( TCCHSubserviceState aState, 
+		    							TInt aServiceError );
+		
+		/**
+		* Handler for the CCH Errors
+		* @param aServiceError
+		*/	
+		void DoHandleCchErrorL( TInt aServiceError );
+		
+		/**
+		* Create IM Cache Accessor
+		* 
+		*/			
+		void CreateIMCacheAccessorL();
+
+		/**
+		* Release IM Cache Accessor
+		* 
+		*/
+		void ReleaseIMCacheAccessor();	    
+		
+		/**
+    	* Notify the list of Observers registered for the IM Event
+    	* @param aBuddyId, Buddy Id for which the Event is received
+       	*/       	
+		void NotifyObserversL(TVIMPSTEnums::TIMEventType aEventType ,const TDesC& aBuddyId );
+						
+
+	private :
+		
+		// Service Id
+		TUint iServiceId;
+
+		//doesnot own.
+		CVIMPSTEngineCchHandler& iCchHandler;                   
+		
+		//doesnt own - handler to the SP Settings
+		CVIMPSTEngineServiceTableFetcher& iTableFetcher;
+
+		//Doesnt Own - Handler to the ServiceStateListener
+		MVIMPSTEngineServiceConnectionEventObserver& iObserver;
+		
+        // Stores the Type of SubService
+        TVIMPSTEnums::SubServiceType iType; 
+
+		// owned, access to accesss/update interface  
+		// call realease of factory
+		CIMCacheFactory* iIMCacheFactory;
+
+		// owned, access/update to imcache
+		// call realease of factory
+		MIMCacheAccessor* iIMCacheAccessor;
+
+		//Doesnt Own
+		RPointerArray <MVIMPSTEngineIMSubServiceEventObserver> iChatObserver;   
+
+		// Stores sub services current state
+		TVIMPSTEnums::TVIMPSTRegistrationState  iServiceState;	
+
+	};
+
+#endif      //__CVIMPSTENGINEIMSUBSERVICE_H
+
+//  End of File
+
+