uiservicetab/vimpstengine/inc/cvimpstengineimservicestate.h
changeset 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstengine/inc/cvimpstengineimservicestate.h	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,278 @@
+/*
+* 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 single service
+*
+*/
+
+
+#ifndef     C_CVIMPSTENGINEIMSERVICESTATE_H
+#define     C_CVIMPSTENGINEIMSERVICESTATE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32const.h>
+#include "tvimpstenums.h"
+
+#include "mvimpstcchhandlerobserver.h"
+
+// FORWARD DECLARATINS
+class CVIMPSTEngineServiceTableFetcher;
+
+class MXIMPContext;
+class CVIMPSTEngineSessionCntxtObserver;
+class MVIMPSTServiceSessionObserver;
+class CXmppSettingsApi;
+class MPresenceFeatures;
+class CVIMPSTEngineCchHandler;
+class CVIMPSTServiceStateListener;
+class MVIMPSTEngineFetchCompleteObserver;
+
+// CLASS DECLARATION
+
+/**
+ *  
+ *  This class represents IM sub service
+ *
+ *  @lib vimpstengine.lib
+ *  @since S60 5.0
+ */
+NONSHARABLE_CLASS( CVIMPSTEngineImServiceState ) : public CBase,
+                  								    public MVIMPSTEngineCchHandlerObserver
+    {
+    public: // Constructor and destructor
+
+        /**
+         * Two-phased constructor.
+         *
+         * @param aServiceId, service id
+         * @param aPresenceContext, presence context
+         * @param aEventObserver, presence context observer
+         * @param aTableFetcher, service table fetcher object
+         * @param aXmppParameters, accessor to settings api
+         * @param aSettingId, settings id
+         * @param aCchHandler, reference to cchhandler
+         * @param aObserver,fetch complete observer
+         * @return ptr to CVIMPSTEngineServiceState   
+         */
+        static CVIMPSTEngineImServiceState* NewL( TUint aServiceId, 
+        						MXIMPContext& aPresenceContext,
+        						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
+        						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+        						CXmppSettingsApi& aXmppParameters,
+    							TUint aSettingId,
+    							CVIMPSTEngineCchHandler& aCchHandler,
+    							MVIMPSTEngineFetchCompleteObserver& aObserver );
+
+        /**
+         * Two-phased constructor.
+         *
+         * @param aServiceId, service id
+         * @param aPresenceContext, presence context
+         * @param aEventObserver, presence context observer
+         * @param aTableFetcher, service table fetcher object
+         * @param aXmppParameters, accessor to settings api
+         * @param aSettingId, settings id
+         * @param aCchHandler, reference to cchhandler
+         * @param aObserver,fetch complete observer
+         * @return ptr to CVIMPSTEngineServiceState
+         */
+        static CVIMPSTEngineImServiceState* NewLC( TUint aServiceId, 
+        						MXIMPContext& aPresenceContext,
+        						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
+        						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+        						CXmppSettingsApi& aXmppParameters,
+    							TUint aSettingId,
+    							CVIMPSTEngineCchHandler& aCchHandler,
+    							MVIMPSTEngineFetchCompleteObserver& aObserver );
+
+        /**
+         * Standard C++ destructor
+         */    
+        ~CVIMPSTEngineImServiceState();
+        
+    private: // From MVIMPSTEngineCchHandlerObserver
+        
+        /**
+         * From MVIMPSTEngineCchHandlerObserver 
+         * Observer callback for CCH event
+         *
+         * @param aServiceId, service id
+         * @param aState, service state
+         * @param aServiceError, error
+         * @since S60 5.0
+         */
+        void CchEventOccuredL( 
+            TUint aServiceId, 
+            TCCHSubserviceState aState, 
+            TInt aServiceError );
+        
+        /**
+         * Resolves IM service state for given service id.
+         *
+         * @since S60 3.2
+         * @param aServiceId, service id
+         * @param aCchErr, service error is stored here
+         * @return TVIMPSTRegistrationState,
+         * service state to use
+         */  
+        TVIMPSTEnums::TVIMPSTRegistrationState ResolveImServiceState( 
+		        				TUint aServiceId, TInt& aCchErr ) ;
+	public: 
+        /**
+         * Returns service ID
+         *
+         * @return TUint32
+         */                                    
+
+		TUint32 ServiceId();
+               
+        /**
+         * Sets service state.
+         *
+         * @since S60 5.0
+         * @param aNewState, service state to set
+         */                                                 
+        void SetServiceState( 
+            TVIMPSTEnums::TVIMPSTRegistrationState aNewState );
+		
+      	/**
+		* does unbinding of the context
+		*/
+		TInt UnBindL() ;
+		
+		/**
+		* binds the context.
+		*/
+		TInt BindL( TUid aProtocolImpUid,
+				       TInt32 aIapId  ) ;
+
+		
+		/**
+		* returns the state of the this service
+		* @return TVIMPSTRegistrationState.
+		*/
+		TVIMPSTEnums::TVIMPSTRegistrationState ServiceState();
+		
+		/**
+		* cotacts updation completed
+		*/
+		void ContactsUpdateCompletedL();
+            
+    public:
+    	/**
+    	 * Register Session Observer
+    	 * @param aObserver observer to be registered
+    	 */
+    	 void RegisterServiceSessionObserver
+    	 					(MVIMPSTServiceSessionObserver* aObserver);
+    	 
+    	/**
+    	 * UnRegisters Session Observer
+    	 * @param aObserver observer to be unregistered.
+    	 */
+    	 void UnRegisterServiceSessionObserver
+    	 					(MVIMPSTServiceSessionObserver* aObserver);
+    		
+    	 
+     
+    private:
+    
+        /**
+         * Handles cch error events.
+         *
+         * @since S60 5.0
+         * @param aServiceError, service error code
+         */                                          
+        void DoHandleCchErrorL( TInt aServiceError );
+        
+        /**
+         * NotifyObserver of the change in Service State
+         * @param aServiceError service error
+         */
+         void NotifyObserversL(TInt aServiceError);
+         
+         
+    private: // Implementation
+
+        /**
+         * Standard C++ constructor
+         * @param aServiceId, service id
+         * @param aPresenceContext, presence context
+         * @param aEventObserver, presence context observer
+         * @param aTableFetcher, service table fetcher object
+         * @param aXmppParameters, accessor to settings api
+         * @param aSettingId, settings id
+         * @param aCchHandler, reference to cchhandler
+         */    
+        CVIMPSTEngineImServiceState( TUint aServiceId, 
+        						MXIMPContext& aPresenceContext,
+        						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
+        						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
+        						CXmppSettingsApi& aXmppParameters,
+    							TUint aSettingId,
+    							CVIMPSTEngineCchHandler& aCchHandler);
+
+        /**
+         * Performs the 2nd phase of construction.
+         * @param aObserver,fetch complete observer
+         */             
+        void ConstructL( MVIMPSTEngineFetchCompleteObserver& aObserver );
+        
+    private: // Data
+    
+        // Service id of this service
+        TUint32   iServiceId;
+    
+               
+        // Stores services current state
+        TVIMPSTEnums::TVIMPSTRegistrationState  iServiceState;
+        
+        //doen not own reference to presence context
+        MXIMPContext& iPresenceContext;
+		
+		//does not own reference to context observer			
+		CVIMPSTEngineSessionCntxtObserver& iEventObserver;
+		
+		//Ref to the service table getter functions
+		CVIMPSTEngineServiceTableFetcher& iTableFetcher;
+		
+		// reference to cenrep api.
+		CXmppSettingsApi& iXmppParameters;
+        
+        //settings id
+        TUint iSettingId;
+        
+        // owned  pointer to presence plugin
+        MPresenceFeatures* iPresFeatures;
+
+		//Doesn't Own
+		RPointerArray <MVIMPSTServiceSessionObserver> iObservers;
+		
+		// will be ETrue if Logged in to the service
+		TBool iLoggedIn;
+		
+		//handler to the CCh, doesnt own
+		CVIMPSTEngineCchHandler& iCchHandler;
+		
+		// owns : state change lsitener
+       CVIMPSTServiceStateListener* iStateListener;
+       
+       //says whether a bind operation was initiated from here
+       TBool iBindOperationInitiated;
+	
+    };
+
+#endif // C_CVIMPSTENGINEIMSERVICESTATE_H
+
+// End of file