uiservicetab/vimpstengine/inc/cvimpstengineimservicestate.h
changeset 0 5e5d6b214f4f
equal deleted inserted replaced
-1:000000000000 0:5e5d6b214f4f
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Class that capsulates single service
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef     C_CVIMPSTENGINEIMSERVICESTATE_H
       
    20 #define     C_CVIMPSTENGINEIMSERVICESTATE_H
       
    21 
       
    22 // INCLUDES
       
    23 #include <e32base.h>
       
    24 #include <e32const.h>
       
    25 #include "tvimpstenums.h"
       
    26 
       
    27 #include "mvimpstcchhandlerobserver.h"
       
    28 
       
    29 // FORWARD DECLARATINS
       
    30 class CVIMPSTEngineServiceTableFetcher;
       
    31 
       
    32 class MXIMPContext;
       
    33 class CVIMPSTEngineSessionCntxtObserver;
       
    34 class MVIMPSTServiceSessionObserver;
       
    35 class CXmppSettingsApi;
       
    36 class MPresenceFeatures;
       
    37 class CVIMPSTEngineCchHandler;
       
    38 class CVIMPSTServiceStateListener;
       
    39 class MVIMPSTEngineFetchCompleteObserver;
       
    40 
       
    41 // CLASS DECLARATION
       
    42 
       
    43 /**
       
    44  *  
       
    45  *  This class represents IM sub service
       
    46  *
       
    47  *  @lib vimpstengine.lib
       
    48  *  @since S60 5.0
       
    49  */
       
    50 NONSHARABLE_CLASS( CVIMPSTEngineImServiceState ) : public CBase,
       
    51                   								    public MVIMPSTEngineCchHandlerObserver
       
    52     {
       
    53     public: // Constructor and destructor
       
    54 
       
    55         /**
       
    56          * Two-phased constructor.
       
    57          *
       
    58          * @param aServiceId, service id
       
    59          * @param aPresenceContext, presence context
       
    60          * @param aEventObserver, presence context observer
       
    61          * @param aTableFetcher, service table fetcher object
       
    62          * @param aXmppParameters, accessor to settings api
       
    63          * @param aSettingId, settings id
       
    64          * @param aCchHandler, reference to cchhandler
       
    65          * @param aObserver,fetch complete observer
       
    66          * @return ptr to CVIMPSTEngineServiceState   
       
    67          */
       
    68         static CVIMPSTEngineImServiceState* NewL( TUint aServiceId, 
       
    69         						MXIMPContext& aPresenceContext,
       
    70         						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
       
    71         						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
    72         						CXmppSettingsApi& aXmppParameters,
       
    73     							TUint aSettingId,
       
    74     							CVIMPSTEngineCchHandler& aCchHandler,
       
    75     							MVIMPSTEngineFetchCompleteObserver& aObserver );
       
    76 
       
    77         /**
       
    78          * Two-phased constructor.
       
    79          *
       
    80          * @param aServiceId, service id
       
    81          * @param aPresenceContext, presence context
       
    82          * @param aEventObserver, presence context observer
       
    83          * @param aTableFetcher, service table fetcher object
       
    84          * @param aXmppParameters, accessor to settings api
       
    85          * @param aSettingId, settings id
       
    86          * @param aCchHandler, reference to cchhandler
       
    87          * @param aObserver,fetch complete observer
       
    88          * @return ptr to CVIMPSTEngineServiceState
       
    89          */
       
    90         static CVIMPSTEngineImServiceState* NewLC( TUint aServiceId, 
       
    91         						MXIMPContext& aPresenceContext,
       
    92         						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
       
    93         						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
    94         						CXmppSettingsApi& aXmppParameters,
       
    95     							TUint aSettingId,
       
    96     							CVIMPSTEngineCchHandler& aCchHandler,
       
    97     							MVIMPSTEngineFetchCompleteObserver& aObserver );
       
    98 
       
    99         /**
       
   100          * Standard C++ destructor
       
   101          */    
       
   102         ~CVIMPSTEngineImServiceState();
       
   103         
       
   104     private: // From MVIMPSTEngineCchHandlerObserver
       
   105         
       
   106         /**
       
   107          * From MVIMPSTEngineCchHandlerObserver 
       
   108          * Observer callback for CCH event
       
   109          *
       
   110          * @param aServiceId, service id
       
   111          * @param aState, service state
       
   112          * @param aServiceError, error
       
   113          * @since S60 5.0
       
   114          */
       
   115         void CchEventOccuredL( 
       
   116             TUint aServiceId, 
       
   117             TCCHSubserviceState aState, 
       
   118             TInt aServiceError );
       
   119         
       
   120         /**
       
   121          * Resolves IM service state for given service id.
       
   122          *
       
   123          * @since S60 3.2
       
   124          * @param aServiceId, service id
       
   125          * @param aCchErr, service error is stored here
       
   126          * @return TVIMPSTRegistrationState,
       
   127          * service state to use
       
   128          */  
       
   129         TVIMPSTEnums::TVIMPSTRegistrationState ResolveImServiceState( 
       
   130 		        				TUint aServiceId, TInt& aCchErr ) ;
       
   131 	public: 
       
   132         /**
       
   133          * Returns service ID
       
   134          *
       
   135          * @return TUint32
       
   136          */                                    
       
   137 
       
   138 		TUint32 ServiceId();
       
   139                
       
   140         /**
       
   141          * Sets service state.
       
   142          *
       
   143          * @since S60 5.0
       
   144          * @param aNewState, service state to set
       
   145          */                                                 
       
   146         void SetServiceState( 
       
   147             TVIMPSTEnums::TVIMPSTRegistrationState aNewState );
       
   148 		
       
   149       	/**
       
   150 		* does unbinding of the context
       
   151 		*/
       
   152 		TInt UnBindL() ;
       
   153 		
       
   154 		/**
       
   155 		* binds the context.
       
   156 		*/
       
   157 		TInt BindL( TUid aProtocolImpUid,
       
   158 				       TInt32 aIapId  ) ;
       
   159 
       
   160 		
       
   161 		/**
       
   162 		* returns the state of the this service
       
   163 		* @return TVIMPSTRegistrationState.
       
   164 		*/
       
   165 		TVIMPSTEnums::TVIMPSTRegistrationState ServiceState();
       
   166 		
       
   167 		/**
       
   168 		* cotacts updation completed
       
   169 		*/
       
   170 		void ContactsUpdateCompletedL();
       
   171             
       
   172     public:
       
   173     	/**
       
   174     	 * Register Session Observer
       
   175     	 * @param aObserver observer to be registered
       
   176     	 */
       
   177     	 void RegisterServiceSessionObserver
       
   178     	 					(MVIMPSTServiceSessionObserver* aObserver);
       
   179     	 
       
   180     	/**
       
   181     	 * UnRegisters Session Observer
       
   182     	 * @param aObserver observer to be unregistered.
       
   183     	 */
       
   184     	 void UnRegisterServiceSessionObserver
       
   185     	 					(MVIMPSTServiceSessionObserver* aObserver);
       
   186     		
       
   187     	 
       
   188      
       
   189     private:
       
   190     
       
   191         /**
       
   192          * Handles cch error events.
       
   193          *
       
   194          * @since S60 5.0
       
   195          * @param aServiceError, service error code
       
   196          */                                          
       
   197         void DoHandleCchErrorL( TInt aServiceError );
       
   198         
       
   199         /**
       
   200          * NotifyObserver of the change in Service State
       
   201          * @param aServiceError service error
       
   202          */
       
   203          void NotifyObserversL(TInt aServiceError);
       
   204          
       
   205          
       
   206     private: // Implementation
       
   207 
       
   208         /**
       
   209          * Standard C++ constructor
       
   210          * @param aServiceId, service id
       
   211          * @param aPresenceContext, presence context
       
   212          * @param aEventObserver, presence context observer
       
   213          * @param aTableFetcher, service table fetcher object
       
   214          * @param aXmppParameters, accessor to settings api
       
   215          * @param aSettingId, settings id
       
   216          * @param aCchHandler, reference to cchhandler
       
   217          */    
       
   218         CVIMPSTEngineImServiceState( TUint aServiceId, 
       
   219         						MXIMPContext& aPresenceContext,
       
   220         						CVIMPSTEngineSessionCntxtObserver& aEventObserver,
       
   221         						CVIMPSTEngineServiceTableFetcher& aTableFetcher,
       
   222         						CXmppSettingsApi& aXmppParameters,
       
   223     							TUint aSettingId,
       
   224     							CVIMPSTEngineCchHandler& aCchHandler);
       
   225 
       
   226         /**
       
   227          * Performs the 2nd phase of construction.
       
   228          * @param aObserver,fetch complete observer
       
   229          */             
       
   230         void ConstructL( MVIMPSTEngineFetchCompleteObserver& aObserver );
       
   231         
       
   232     private: // Data
       
   233     
       
   234         // Service id of this service
       
   235         TUint32   iServiceId;
       
   236     
       
   237                
       
   238         // Stores services current state
       
   239         TVIMPSTEnums::TVIMPSTRegistrationState  iServiceState;
       
   240         
       
   241         //doen not own reference to presence context
       
   242         MXIMPContext& iPresenceContext;
       
   243 		
       
   244 		//does not own reference to context observer			
       
   245 		CVIMPSTEngineSessionCntxtObserver& iEventObserver;
       
   246 		
       
   247 		//Ref to the service table getter functions
       
   248 		CVIMPSTEngineServiceTableFetcher& iTableFetcher;
       
   249 		
       
   250 		// reference to cenrep api.
       
   251 		CXmppSettingsApi& iXmppParameters;
       
   252         
       
   253         //settings id
       
   254         TUint iSettingId;
       
   255         
       
   256         // owned  pointer to presence plugin
       
   257         MPresenceFeatures* iPresFeatures;
       
   258 
       
   259 		//Doesn't Own
       
   260 		RPointerArray <MVIMPSTServiceSessionObserver> iObservers;
       
   261 		
       
   262 		// will be ETrue if Logged in to the service
       
   263 		TBool iLoggedIn;
       
   264 		
       
   265 		//handler to the CCh, doesnt own
       
   266 		CVIMPSTEngineCchHandler& iCchHandler;
       
   267 		
       
   268 		// owns : state change lsitener
       
   269        CVIMPSTServiceStateListener* iStateListener;
       
   270        
       
   271        //says whether a bind operation was initiated from here
       
   272        TBool iBindOperationInitiated;
       
   273 	
       
   274     };
       
   275 
       
   276 #endif // C_CVIMPSTENGINEIMSERVICESTATE_H
       
   277 
       
   278 // End of file