--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/servicewidget/servicewidgetdatapublisher/inc/cservicewidgetpresencehandler.h Wed Sep 01 12:33:36 2010 +0100
@@ -0,0 +1,242 @@
+/*
+* 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: presene status handler
+ *
+ *
+*/
+
+
+#ifndef CSERVICEWIDGETPRESENCEHANDLER_H
+#define CSERVICEWIDGETPRESENCEHANDLER_H
+
+#include <presencecachereader2.h>
+#include <mpresencebuddyinfo2.h> // buddy info class
+#include <presenceinfo.h> //Presence info test
+#include <presencecachereadhandler2.h> // handling the presence cache events
+#include <ximpcontextobserver.h>
+#include "servicewidgetenums.hrh"
+
+// farword declarations
+class MXIMPContext;
+class MXIMPClient;
+class MPresenceCacheReadHandler2;
+class MServiceWidgetPresenceObserver;
+class CActiveSchedulerWait;
+class MXIMPBase;
+class MPresenceFeatures;
+class CServiceWidgetBuddyPresence;
+class CFbsBitmap;
+
+// class defnitions
+class CServiceWidgetPresenceHandler : public CBase,
+ public MXIMPContextObserver,
+ public MPresenceCacheReadHandler2
+
+{
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param aPresenceObserver, prsence observer
+ * @param aServiceName, service name
+ */
+ static CServiceWidgetPresenceHandler* NewL( MServiceWidgetPresenceObserver& aPresenceObserver,
+ const TDesC& aServiceName,
+ const TDesC& aOwnId );
+
+ /**
+ * Two-phased constructor.
+ * @param aPresenceObserver, prsence observer
+ * @param aServiceName, service name
+ */
+ static CServiceWidgetPresenceHandler* NewLC( MServiceWidgetPresenceObserver& aPresenceObserver,
+ const TDesC& aServiceName,
+ const TDesC& aOwnId );
+
+ /**
+ * Standard C++ destructor
+ */
+ ~CServiceWidgetPresenceHandler();
+
+ public:
+
+ /**
+ * @return online counts
+ */
+ TInt OnlineBuddyCount();
+
+ /**
+ * @return all friend count
+ */
+ TInt AllBuddyCount();
+
+ /**
+ * @return all inviations count
+ */
+ TInt GetInviteCounts();
+
+ /**
+ * @return on going operation id
+ */
+ TWServiceOperationId GetOngoingOperationId();
+
+ /**
+ * get the connected session
+ * @param aProtocolUid, protocal to use
+ * @param aServiceId, service id to use
+ */
+ void GetConnectedSessionL(TInt aProtocolUid,
+ TInt aServiceId );
+
+ /**
+ * release the connected session
+ */
+ void ReleaseConnectionL();
+
+ /**
+ * release the connected session
+ */
+ TWSPresenceStatus GetOwnStatus();
+
+
+ private : // from MXIMPContextObserver
+ /**
+ * HandleximpContextEvent method from context obsrver
+ * ximp framework
+ * @param aContext
+ * @param aEvent, event
+ */
+ void HandlePresenceContextEvent(const MXIMPContext& aContext,
+ const MXIMPBase& aEvent );
+
+ private: // from 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: // Implementation
+
+ /**
+ * Standard C++ constructor
+ */
+ CServiceWidgetPresenceHandler( MServiceWidgetPresenceObserver& aPresenceObserver );
+
+ /**
+ * Performs the 2nd phase of construction.
+ * @param aServiceName, service name
+ */
+ void ConstructL(const TDesC& aServiceName, const TDesC& aOwnId );
+
+
+ /**
+ * subsribe the presence change notification
+ */
+ void RetrieveSubscribedListL();
+
+ /**
+ * subsribe the presence change notification
+ */
+ void SubscribeForAuthorizationL();
+
+ /**
+ * subsribe the presence change notification
+ * @param aUserId, user to use
+ */
+ void SubscribePresenceL( const TDesC& aUserId );
+
+ /**
+ * read buddy presence from cache
+ */
+ void ReadPresenceFromCacheL();
+
+ /**
+ * helper method for bind complete
+ */
+ void DoHandleBindCompleteL();
+
+ /**
+ * helper method buddy fetch event
+ * @param aEvent, group list event
+ */
+ void DoHandlePresentityGroupContentEventL( const MXIMPBase& aEvent );
+
+ /**
+ * helper method friend request fetch event
+ * @param aEvent, grand list event
+ */
+ void DoHandlePresenceGrantRequestListEventL( const MXIMPBase& aEvent );
+
+ /**
+ * helper method for converting ximpstatus to local status
+ * @param aAvailabilityEnum, availability of contact
+ */
+ TWSPresenceStatus ConvertPresenceCacheEnums(MPresenceBuddyInfo2::TAvailabilityValues aAvailabilityEnum,TPtrC aAvabilityText);
+
+ /**
+ * method for maitain the unique information about status
+ * @param aUserId, a user id of contact
+ * @param aStatus, status of contact
+ */
+ void CheckAndCacheBuddyAvailabilityL( const TDesC& aUserId, TWSPresenceStatus aStatus );
+
+private: // Data
+
+ // not owns : reference to presence observer for notification
+ MServiceWidgetPresenceObserver& iPresenceObserver;
+ // owns : service name
+ HBufC* iServiceName;
+ // owns : own user id
+ HBufC* iOwnUserId;
+ // not own
+ TInt iServiceId;
+ // own , client for presence framework
+ MXIMPClient* iClient;
+ // own ,presence context to prsence framework
+ MXIMPContext* iPresenceCtx;
+ //Stores the XIMPFw EventTypes Subscribed for
+ RArray< TInt32 > iAcceptedEventTypes;
+ //owns : reference to presence cache reader
+ MPresenceCacheReader2* iPresenceCacheReader;
+ // owns : total budy count
+ TInt iTotalCount;
+ // owned pointer to presence plugin
+ MPresenceFeatures* iFeatures;
+ // own : current ongoing operation
+ TWServiceOperationId iOperationId;
+ // owns : list of presence buddy
+ RPointerArray<CServiceWidgetBuddyPresence> iOnlineBuddyArray;
+ // owns : own status
+ TWSPresenceStatus iOwnStatus;
+ // owns : invitation count
+ TInt iInvitationCount;
+
+};
+
+#endif /*CSERVICEWIDGETPRESENCEHANDLER_H*/