uiservicetab/vimpstdetailsviewplugin/inc/cvimpstdetailspresencehandler.h
branchRCL_3
changeset 23 9a48e301e94b
parent 0 5e5d6b214f4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstdetailsviewplugin/inc/cvimpstdetailspresencehandler.h	Wed Sep 01 12:33:36 2010 +0100
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2008-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:  Implementation of the presence handler
+*
+*/
+
+
+#ifndef CVIMPSTDETAILSPRESENCEHANDLER_H
+#define CVIMPSTDETAILSPRESENCEHANDLER_H
+
+// INCLUDES
+#include <e32base.h>
+
+#include <presencecachereadhandler2.h> // handling the presence cache events 
+#include <mpresencebuddyinfo2.h> // buddy info class
+#include "tvimpstenums.h"
+#include "mvimpstdetailspresencehandler.h"
+
+// FORWARD DECLARATIONS
+class MVIMPSTDetailsPresenceObserver;
+class MPresenceBuddyInfo2;
+class MPresenceCacheReader2;
+class MXIMPClient;
+class MXIMPContext;
+
+// CLASS DECLARATION
+/**
+ * Class implementing the header part control of vimpstdetailsviewplugin
+ *
+ *  @lib vimpstdetailsviewplugin.dll
+ *  @since S60 v5.0
+ */
+ 
+class CVIMPSTDetailsPresenceHandler :public CBase, 
+									 public MVIMPSTDetailsPresenceHandler,
+									 public MPresenceCacheReadHandler2
+    {
+public:
+    // Construction & destruction
+    /**
+     * Two-phased constructor
+     * @param aServiceName, service data.
+     * @param aObserver, presence observer 
+     * @param aPresenceSupported, presence supported or not 
+     * @return instance of this class
+     * @since S60 v5.0
+     */
+    static CVIMPSTDetailsPresenceHandler* NewL( const TDesC& aServiceName, 
+    											MVIMPSTDetailsPresenceObserver& aObserver,
+    											TBool aPresenceSupported  );
+    
+    /**
+     * Destructor.
+     * @since S60 v5.0
+     */
+    ~CVIMPSTDetailsPresenceHandler();
+ 
+
+public: //  from MVIMPSTDetailsPresenceHandler
+
+     /**
+     * from MVIMPSTDetailsPresenceHandler
+     * fetch presence from cache
+     * @since S60 v5.0
+     */
+    void  SubscribePresenceL(const TDesC& aUserId );
+   
+    /**
+     * from MVIMPSTDetailsPresenceHandler
+     * return the presence status
+     * @since S60 v5.0
+     */
+    TVIMPSTEnums::TOnlineStatus GetPresenceStatus();
+    
+   
+   	/**
+     * from MVIMPSTDetailsPresenceHandler
+     * @param aIndex , index of the control
+     * @return  Label for control
+     * @since S60 v5.0
+     */
+	const TDesC& GetHeaderLabelDataL( TInt aIndex );
+	
+	 /**
+	 * from MVIMPSTDetailsPresenceHandler
+     * @return the presence status message
+     * @since S60 v5.0
+     */
+    const TDesC& GetStatusMessageL();
+
+    /**
+     * function to get supported or not 
+     * @since S60 v5.0
+     * @return ETrue if supported
+     */
+    TBool IsSupported() const ;
+  
+
+public: // 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:
+	
+    /**
+     * Constructor for performing 1st stage construction
+     * @param aObserver, presence observer 
+     * @param aPresenceSupported, check for PresenceSupported or not
+     * @since S60 v5.0
+     */
+    CVIMPSTDetailsPresenceHandler(MVIMPSTDetailsPresenceObserver& aObserver,
+                                   TBool aPresenceSupported );
+
+    /**
+     * Constructor for performing 2nd stage construction
+     * @param aServiceName, service data.
+     * @since S60 v5.0
+     */
+    void ConstructL( const TDesC& aServiceName );
+    
+    /**
+    
+    /**
+     * 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.
+     */
+    void ConvertPresenceCacheEnums(MPresenceBuddyInfo2::TAvailabilityValues aAvailabilityEnum, TPtrC aAvabilityText);
+	
+	/**
+     * Helper function for the setting the status text and status
+     * @param aStatusMessage, status message .
+	 * @since S60 v5.0
+     */
+	void ProcessStatusMesssageL(const TDesC& aStatusMessage  );
+	
+     			
+	/**
+     * function to get the label text
+     * @since S60 v5.0
+     * @return status text
+     */
+	const TDesC& GetStatusTextL();
+	
+	  /**
+       * 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.
+       */
+     void GetKeyFieldsAndValuesL(MPresenceBuddyInfo2& aPresenceBuddyInfo);
+
+
+
+private:  // data member
+          
+     // not owns: reference to presence observer 
+    MVIMPSTDetailsPresenceObserver& iPresenceObserver;
+  	// Owns : ximp client
+	MXIMPClient* iXIMClient ;      
+    //Own : ximp context 
+    MXIMPContext* iPresenceContext;
+   	//owns : pointer to presence read interface
+	MPresenceCacheReader2* iPresenceCacheReader;
+	//  owns, service name 
+	HBufC* iServiceName;
+	//  owns, user id
+	HBufC* iUserId;
+	
+	//  owns, status message from server if any
+	HBufC* iStatusMessage;
+	
+	//  owns, status text , online/offline etc
+	HBufC* iStatusText;
+
+	//  owns, status
+	TVIMPSTEnums::TOnlineStatus iStatus;
+	//  owns, presence supported or not  
+	TBool iPresenceSupported;
+    
+    };
+
+#endif // CVIMPSTDETAILSPRESENCEHANDLER_H