uiservicetab/vimpstengine/inc/cvimpstenginepresencesubservice.h
branchRCL_3
changeset 28 3104fc151679
parent 27 2b7283837edb
child 29 9a48e301e94b
--- a/uiservicetab/vimpstengine/inc/cvimpstenginepresencesubservice.h	Thu Aug 19 09:41:53 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,582 +0,0 @@
-/*
-* 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 handling connection to precense framework
-*
-*/
-
-
-#ifndef     CVIMPSTENGINEPRESENCESUBSERVICE_H
-#define     CVIMPSTENGINEPRESENCESUBSERVICE_H
-
-// INCLUDES
-#include <e32base.h>
-#include <presencecachereadhandler2.h> // handling the presence cache events 
-#include <mpresencebuddyinfo2.h> // buddy info class
-#include <presenceinfo.h> //Presence info test
-
-#include "mvimpstenginesubservice.h"
-#include "mvimpstenginepresencesubservice.h"
-#include "mvimpstenginecchhandlerobserver.h"
-#include "mvimpstenginesessioncntxtobserver.h"
-#include "tvimpstenums.h"
-#include "cvimpstengineimagehandler.h"
-//FORWARD DECLARATIONS
-class CVIMPSTEngineServiceTableFetcher;
-class CVIMPSTEngineCchHandler;
-class CVIMPSTEngineSessionCntxtObserver;
-class MPresenceCacheReader2;
-class CIMCacheFactory;
-class MIMCacheUpdater;
-class MPresentityGroupContentEvent;
-class CVIMPSTBlockedListManager;
-class MVIMPSTEngineServiceConnectionEventObserver;
-
-// CLASS DECLARATION
-/**
- *  Presence sub service
- *  This class implements the presence subservice
- *  The problem in VOIP case would be that this "sip" must be hardcoded. Can this be avoided
- *
- *
- *  The Presence Information can be fetched either thro PresenceCache or
- *  thro XIMP's MPresentityPresenceEvent. So somehow we should be able to differentiate 
- *  which service uses PresenceCache or XIMP's MPresentityPresenceEvent during the creation of this object
- *  One of the proposal could be is to use the CCH, if it could provide us this information or SP Settings
- *  
- *  All the Block/Friend Request/Presence information of a contact should be passed 
- *  to the VIMPSTStorage which will update the list on the UI.
- *  
- */
-
-
-NONSHARABLE_CLASS( CVIMPSTEnginePresenceSubService ): public CBase, 
-						  public MVIMPSTEnginePresenceSubService,
-                          public MPresenceCacheReadHandler2,                          
-                          public MVIMPSTEngineCchHandlerObserver,
-                          public MVIMPSTEngineSessionCntxtObserver
-    {
-    //for testcases
-    friend class T_VimpstEnginePresenceSubService;
-
-    public:
-
-        /**
-         * Two-phased constructor.
-         *
-         * @since s60 5.0
-         * @param aServiceId, service id
-         * @param aCchHandler, reference to cchhandler.
-         * @param aTableFetcher, reference to settingstable.
-         * @param aXimpEventObserver, reference to ximpevent observer.
-         * @param aServiceStateListener, reference to servicestatelistener.
-         */
-        static CVIMPSTEnginePresenceSubService* NewL( TUint32 aServiceId, 
-                                                    CVIMPSTEngineCchHandler& aCchHandler,
-                                                    CVIMPSTEngineServiceTableFetcher& aTableFetcher,
-                                                    CVIMPSTEngineSessionCntxtObserver& aXimpEventObserver,
-                                                    MVIMPSTEngineServiceConnectionEventObserver& aObserver);
-
-        /**
-         * Two-phased constructor.
-         *
-         * @since s60 5.0
-         * @param aServiceId, service id
-         * @param aCchHandler, reference to cchhandler.
-         * @param aTableFetcher, reference to settingstable.
-         * @param aXimpEventObserver, reference to ximpevent observer.
-         * @param aServiceStateListener, reference to servicestatelistener.
-         */
-        static CVIMPSTEnginePresenceSubService* NewLC(TUint32 aServiceId, 
-                CVIMPSTEngineCchHandler& aCchHandler,
-                CVIMPSTEngineServiceTableFetcher& aTableFetcher,
-                CVIMPSTEngineSessionCntxtObserver& aXimpEventObserver,
-                MVIMPSTEngineServiceConnectionEventObserver& aObserver);
-
-        /**
-         * Standard C++ destructor
-         */    
-        ~CVIMPSTEnginePresenceSubService();        
-    
-    public: //From MVIMPSTSubService     
-    	
-        /**
-         * @return TVIMPSTRegistrationState Service State of this service
-         */
-        TVIMPSTEnums::TVIMPSTRegistrationState SubServiceState() const;     
-        
-        
-        TVIMPSTEnums::SubServiceType Type() const;                         
-
-		
-		/**
-         * @see MVIMPSTSubService
-         */
-		TBool Enabled();
-		
-		/**
-		* Set the blocked list manager.
-		@param aBlockedListMgr blocked list instance pointer.
-		*/
-		void SetBlockedListManager(CVIMPSTBlockedListManager* aBlockedListMgr);
-
-		//Reset the blocked list to zero blocked contact	
-    	void ResetBlockedListManagerL();
-    public: //From MVIMPSTEnginePresenceSubService
-        
-        /**
-		* @see MVIMPSTEnginePresenceSubService
-		*/
-		void RegisterPresenceEventObserverL(
-							MVIMPSTEnginePresenceSubServiceEventObserver* aObserver);
-
-		/**
-		* @see MVIMPSTEnginePresenceSubService
-		*/
-		void UnRegisterPresenceEventObserver(
-							MVIMPSTEnginePresenceSubServiceEventObserver* aObserver);
-		
-        /**
-         * Subsribes presence of a single contact
-         * Can be done for the contacts who are already subscribed(Required atleast in XMPP Case)
-         * This function can be used on FriendRequests also wherein it performs 2 operation
-         * 1. Accepts the invitation if Friend Request is Pending(GrantPresenceForPresentityL)
-         * 2. Subscribes for the presence either to PresenceCache 
-         * or XIMP (MPresentityPresenceEvent)
-         * 
-         *
-         * @since S60 5.0
-         * @param aUriOfTheContact, Presence URI to be subscribed         
-         */
-         void SubscribePresenceOfSingleContactL( const TDesC& aUriOfTheContact );            
-        
-           
-        /**
-         * Unsubsribes presence of a single contact
-         * Used for those contact whose presence has been subscribed
-         * Can be used for Friend Requests also
-         * 1. Denies the invitation for the contact (WithdrawPresenceGrantFromPresentityL)
-         * 2. Sends a unsubscribe to PresenceCache 
-         * or XIMP (UnsubscribePresentityPresenceL)
-         *
-         * @since S60 5.0
-         * @param aUriOfTheContact, Presence URI to be subscribed         
-         */
-         void UnSubscribePresenceOfSingleContactL( const TDesC& aUriOfTheContact );				
-		
-        /**
-         * Fetches presence from presencecache.
-         * 
-         * @since 5.0
-         **/
-        TInt  FetchPresenceFromCache();
-        
-        /**
-         * Unsubscribes ximp group contents.
-         * 
-         * Buddy list and authorization lists are always unsubscibed.
-         * Block list is unsubscribed if it is supported.
-         *
-         * @since S60 5.0
-         * @param None
-         * @leave Standard Symbian error codes.
-         * @return None
-         */                 
-        void UnsubscribeListsL();
-      
-       /**
-        * Requests the XIMPFw to subscribe for presence
-        * grant request list subscription.
-        */  
-       void  SubscribeForAuthorizationL();
-       
-       /**
-        * sends PresenceGrantForPresentity  response to server        
-        * @param aContactId, id of the requesting party..
-        * @param aResponse , Etrue if accpeted else rejected. 
-        * @return TInt error if any       
-        */ 
-        TInt SendPresenceGrantPresentityL( const TDesC& aContactId , TBool aResponse );
-        
-        /**
-         * IsChangeOwnStatusSupported by the protocol
-         * 
-         * @since S60 5.0   
-         * @return TBool ETrue if supported else EFalse.
-         */ 
-         TBool IsChangeOwnStatusSupported() ;
-         
-        /**
-         * IsStatusMsgSupported by the protocol
-         * 
-         * @since S60 5.0   
-         * @return TBool ETrue if supported else EFalse.
-         */ 
-         TBool IsStatusMsgSupported();
-         
-          /**
-         * IsAvatarSupported by the protocol
-         * 
-         * @since S60 5.0   
-         * @return TBool ETrue if supported else EFalse.
-         */ 
-        TBool IsAvatarSupported() ;
-        
-        /**
-         * SetAvatarSupported by the protocol
-         * 
-         * @since S60 5.0   
-         * @param aSupported, TBool ETrue if supported else EFalse.
-         */ 
-        void SetAvatarSupported(TBool aSupported ) ;
-      
-
-         /**
-          * PublishOwnPresenceL
-          * to update the  ownstatus to server.
-          * and publishes the own status.
-          * 
-          * @param aStatus ,status to be updated to the server.
-          * @param aValue , text for the status message
- 		  * @param aFilename , avatar file name
-  		  * @param aMimetype , a mime type
-  		  * @param aIsAvatar , a avatar field included
-          * @return TInt error if any
-          */                                
-         TInt PublishOwnPresenceL(TVIMPSTEnums::TOnlineStatus aStatus,
-         						  const TDesC& aValue,
-         						  const TDesC& aFilename = KNullDesC, 
-         						  const TDesC8& aMimetype = KNullDesC8,
-         						  TBool aIsAvatar = EFalse  );
-
-      
-         /**
-          * Removes URI from block list
-          *
-          * @since S60 5.0
-          * @param aUriOfTheContact, URI to be removed
-          * @return error.
-          */
-         TInt  RemoveFromBlockListL( const TDesC& aUriOfTheContact );
-
-         /**
-          * Adds URI to block list
-          *
-          * @since S60 5.0
-          * @param aContactId, URI to be added
-          * @return error.
-          */
-         TInt  AddToBlockListL( const TDesC& aContactId );
-         
-         /**
-         * Get list of blocked contact.
-         */
-         RPointerArray<HBufC>* GetBlockedList();
-			
-         /**
-         * fetch blocked list from server to get the freshed blocked list.
-         */
-		 void FetchBlockedListFromServerL(MVIMPSTEngineBlockedListFetchEventObserver* aOb);
-
-         /**
-         * function called from the engine once contact fetching completes
-         */
-         void UpdatePresenceStateL();
-         
-         /**
-          * Fetches the presence of singlecontact form presence cache
-          * @param aContact, user id of the ocntact who's presence 
-          * needs to eb fetched.
-          */
-         void FetchPresenceOfSingleContactL(const TDesC& aContact);
-    
-   
-        	             
-	private: // prescachereadhandler
-	
-	     /**
-	        * Handler for AllBuddiesPresenceInService method of MPresenceCacheReader.
-	        *
-	        * @param aErrorCode 
-	        * @param aPresenceBuddyInfoList presence infos for all buddies requested. 
-	        *         Ownership of elements to callee. Can be empty if not found.
-	        */   
-	      void HandlePresenceReadL(TInt aErrorCode,
-	            RPointerArray<MPresenceBuddyInfo2>& aPresenceBuddyInfoList) ;
-	                           
-	       /**
-	        * Handler for Buddy presence change notifications.
-	        *
-	        * @param aErrorCode 
-	        * @param aPresenceBuddyInfo presence info for buddy. 
-	        *         Ownership to callee. Can be NULL if aErrorCode exist.
-	        */    
-		void HandlePresenceNotificationL(TInt aErrorCode,
-	           MPresenceBuddyInfo2* aPresenceBuddyInfo);                                         
-    	
-    
-    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 );
-        /**
-         * Handles any error that occured during login.
-         
-         * @since S60 5.0
-         * @param aServiceError, error
-         */
-        void DoHandleCchErrorL( TInt aServiceError );
-        
-    public:
-        /**
-         * Observer Event for forwarding the ximp events.
-         * @param aContext - ximpfw context
-         * @param aEvent - ximpfw event
-         */ 
-        void HandleSessionContextEventL( const MXIMPContext& aContext, 
-                                             const MXIMPBase& aEvent,
-                                             TXimpOperation aXimpOperation = EVIMPSTXimpOperationNoOperation);                        
-
-    private:
-          
-        /**
-         * Resolves service state for given service id.
-         *
-         * @since S60 5.0
-         * @param aState, state of the subservice
-         * @param aServiceError, service error is stored here
-         * @return TVIMPSTRegistrationState,
-         * service state to use
-         */      
-        TVIMPSTEnums::TVIMPSTRegistrationState  ResolveServiceStateL( TCCHSubserviceState aState, 
-                TInt aServiceError );
-        
-        /**
-         * Gets a list of all presence subscribtions
-         *
-         * @since S60 5.0
-         */
-        void RetrieveSubscribedListL();
-     
-        /**
-         * Handles presentity group context events.
-         *
-         * @since S60 5.0
-         * @param aContext, presence context
-         * @param aEvent, presence event
-         */        
-        void DoHandlePresentityGroupContentEventL(
-            const MXIMPContext& aContext,
-            const MXIMPBase& aEvent );
-
-        /**
-         * Handles presentity grant request list events.
-         *
-         * @since S60 5.0
-         * @param aContext, presence context
-         * @param aEvent, presence event
-         */   
-        void DoHandlePresenceGrantRequestListEventL(
-            const MXIMPContext& aContext,
-            const MXIMPBase& aEvent );
-        
-        /**
-         * Handles presentity block list events.
-         *
-         * @since S60 5.0
-         * @param aContext, presence context
-         * @param aEvent, presence event
-         */   
-       void DoHandlePresenceBlockListEventL(
-           const MXIMPContext& aContext,
-           const MXIMPBase& aEvent );       
-      
-        /**
-         * Handles completed ximp event. 
-         *
-         * @since S60 5.0
-         * @param aType, completed event. 
-         * @param aCompleteCode, error code of complete
-         * @param aEvent, MXIMBase for the clients to use information
-         */                
-        void HandleXimpRequestCompleteL( TXimpOperation aType,
-                                             TInt aCompleteCode,
-                                             const MXIMPBase& aEvent);
-        
-        /**
-         * Handles completed list/bind/unbind events. 
-         *
-         * @since S60 5.0
-         * @param aType, completed event. 
-         * @param aCompleteCode, error code of complete
-         * @param aEvent, MXIMBase for the clients to use information
-         */                
-        void HandleListEventCompleteL(TXimpOperation aType,
-                                         TInt aCompleteCode,
-                                         const MXIMPBase& aEvent );
-        /**
-         * ConvertPresenceStatus 
-         * @param aStatus presence status to be converted
-         * @return  TAvailabilityValues
-         */
-        NPresenceInfo::TAvailabilityValues ConvertPresenceStatus(TVIMPSTEnums::TOnlineStatus aStatus);
-        
-
-        /**
-         * Stores all the contact into virtual store
-         * need to chec how thi has to be handled for sip:as 
-         * sip does not fetch the contacts from the server.
-         * 
-         * @since 5.0
-         * @param aListEvent list containing all the group members.
-         */
-        void StoreToVirtualStoreL( const MPresentityGroupContentEvent& aListEvent );
-        
-        
-        
-        /**
-         * Converts the  presence cache status to client supported presence status.
-         * 
-         * @since 5.0
-         * @param aAvailabilityEnum presence cache status value.
-         * @param aAvabilityText avability text, To support Multiple presence states.
-         * @return TVIMPSTEnums::TOnlineStatus client  presence status.
-         */
-        TVIMPSTEnums::TOnlineStatus ConvertPresenceCacheEnums(MPresenceBuddyInfo2::TAvailabilityValues aAvailabilityEnum,TPtrC aAvabilityText);
-        /**
-         * Initiates downloading of block list
-         * @since 5.0
-         */
-        void RetrieveBlockListL();
-        
-        /**
-         * Converts the  presence cache extension keys 
-         * user for block and pending states  to client supported presence status.
-         * 
-         * @since 5.0
-         * @param aPresenceBuddyInfo presence buddy info class.
-         * @param TVIMPSTEnums::TOnlineStatus client  presence status.
-         */
-        void GetKeyFieldsAndValuesL(MPresenceBuddyInfo2& aPresenceBuddyInfo,TVIMPSTEnums::TOnlineStatus &aStatus);
-        
-		  /**
-           * Handler for Buddy presence change notifications.
-           *
-           * @param aPresenceBuddyInfo presence info for buddy. 
-           */
-        void DoHandlePresenceNotificationL(MPresenceBuddyInfo2& aPresenceBuddyInfo);
-
-        
-    private: // Implementation
-
-        /**
-         * Standard C++ constructor
-         * 
-         * @since s60 5.0
-         * @param aServiceId, service id
-         * @param aCchHandler, reference to cchhandler.
-         * @param aTableFetcher, reference to settingstable.
-         * @param aXimpEventObserver, reference to ximpevent observer.
-         * @param aServiceStateListener, reference to servicestatelistener.
-         */   
-        CVIMPSTEnginePresenceSubService( TUint32 aServiceId, 
-                CVIMPSTEngineCchHandler& aCchHandler,
-                CVIMPSTEngineServiceTableFetcher& aTableFetcher,
-                CVIMPSTEngineSessionCntxtObserver& aXimpEventObserver,
-                MVIMPSTEngineServiceConnectionEventObserver& aObserver );
-        
-        /**
-         * Performs the 2nd phase of construction.
-         */        
-        void ConstructL();
-    
-    private: // Data
-                                
-        // Service identifier
-        TUint32 iServiceId; 
-        
-        //Ref to the CCH Handler
-        //thro this interface Presence sub service listens to the
-        //ECCHPrsenceSub connectivity events.
-        CVIMPSTEngineCchHandler& iCchHandler; 
-        
-        //doesnt own, reference to settings table.
-        CVIMPSTEngineServiceTableFetcher& iSettingsTableFetcher;
-        
-        //doesnot own, reference to ximpeventobserver.
-        CVIMPSTEngineSessionCntxtObserver& iXimpEventObserver;
-        
-        //does not own, reference to servicestatelistener.
-        MVIMPSTEngineServiceConnectionEventObserver& iObserver;
-        
-          
-        //owns
-        MPresenceCacheReader2* iPresenceCacheReader;    
-        
-        //Owns, service name
-        HBufC* iServiceName;
-        
-
-        // Stores services current state
-        TVIMPSTEnums::TVIMPSTRegistrationState  iServiceState;        
-        
-        TBool iChangeStatusSupported;
-        
-        TBool iChangeStatusMsgSupported;
-        
-        // ETrue if supported
-        TBool iAvatarSupported;
-        
-        //Doesnt Own
-		MVIMPSTEnginePresenceSubServiceEventObserver* iSubServiceObserver;
-		
-		 // Etrue if clearing avatar in progress
-		TBool iIsClearingAvatar;
-		
-		//stores the default MBM path
-	    TFileName iDefaultMbmPath;
-		
-		//Blocked list manager instance pointer.
-		CVIMPSTBlockedListManager* iBlockedListMgr;
-
-		//Not owned;Notify that blocked list has been fetched.
-		MVIMPSTEngineBlockedListFetchEventObserver* iBlockedListObserver;
-		
-		//flag indicate if request for fetching blocked list is pending.
-		TBool iBlockListFetchReqPending;
-		
-		//flag indicates pending Logout request
-		TBool iLogoutRequest;
-		// owns : ETrue if fetching is ongoing
-		TBool iIsFetchingContact;
-		
-		TBool iAutoAccept;
-		
-		// owns, tells weather it is subscribe to authorization list or not.
-		TBool iSubscribeToAuthList;
-	
-   }; 
-
-#endif //CVIMPSTENGINEPRESENCESUBSERVICE_H
-