diff -r 3104fc151679 -r 9a48e301e94b uiservicetab/vimpstdetailsviewplugin/inc/cvimpstdetailspresencehandler.h --- /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 + +#include // handling the presence cache events +#include // 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& 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