--- /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