--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstengine/inc/mvimpstenginepresencesubservice.h Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,262 @@
+/*
+* 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: M-Class that capsulates presence sub service API's
+*
+*/
+
+
+#ifndef MVIMPSTENGINEPRESENCESUBSERVICE_H
+#define MVIMPSTENGINEPRESENCESUBSERVICE_H
+
+// INCLUDES
+#include <e32base.h>
+#include "tvimpstenums.h"
+#include "mvimpstenginesubservice.h"
+
+
+//FORWARD DECLARATION
+class MVIMPSTEnginePresenceSubServiceEventObserver;
+class MVIMPSTEngineBlockedListFetchEventObserver;
+//CLASS DECLARATION
+/**
+ *
+ * This class list the M-Class for subservices
+ *
+ * @lib vimpstengine.lib
+ * @since S60 5.0
+ */
+//Class declaration
+class MVIMPSTEnginePresenceSubService: public MVIMPSTEngineSubService
+ {
+
+ public:
+
+ /**
+ * Casts MVIMPSTEnginePresenceSubService to this interface.
+ *
+ * @precond aSubService.Type() == TVIMPSTEnums::EPresence
+ * Panic(EPanicTypeMismatch)
+ * is raised if the precondition does not hold.
+ * @param aSubService Base Class .
+ * @return Casted inteface for the Presence SubService
+ */
+ IMPORT_C static MVIMPSTEnginePresenceSubService& Cast(
+ MVIMPSTEngineSubService& aSubService);
+
+
+ /**
+ * Casts constMVIMPSTEnginePresenceSubService to this interface.
+ *
+ * @precond aSubService.Type() == TVIMPSTEnums::EPresence
+ * Panic(EPanicTypeMismatch)
+ * is raised if the precondition does not hold.
+ * @param aSubService Base Class .
+ * @return Casted inteface for the Presence SubService
+ */
+ IMPORT_C static const MVIMPSTEnginePresenceSubService& Cast(
+ const MVIMPSTEngineSubService& aSubService);
+
+
+ /**
+ * RegisterPresenceEventObserver
+ * The observers that have implemented MVIMPSTEnginePresenceSubServiceEventObserver can use this API
+ * to register themselves to receive Presence SubService related events
+ * @param aObserver - Object that implements the observer class
+ * MVIMPSTEnginePresenceSubServiceEventObserver that needs to be added.
+ */
+ virtual void RegisterPresenceEventObserverL(
+ MVIMPSTEnginePresenceSubServiceEventObserver* aObserver) = 0;
+
+ /**
+ * UnRegisterChatObserver
+ * The observers that have implemented MVIMPSTEnginePresenceSubServiceEventObserver can use this API
+ * to unregister themselves from Presence SubService related events
+ * @param aObserver - Object that implements the observer class
+ * MVIMPSTEnginePresenceSubServiceEventObserver that needs to be removed.
+ */
+ virtual void UnRegisterPresenceEventObserver(
+ MVIMPSTEnginePresenceSubServiceEventObserver* aObserver) = 0;
+
+ /**
+ * 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
+ */
+ virtual void SubscribePresenceOfSingleContactL( const TDesC& aUriOfTheContact ) = 0;
+
+ /**
+ * 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
+ */
+ virtual void UnSubscribePresenceOfSingleContactL( const TDesC& aUriOfTheContact ) = 0;
+ /**
+ * Fetches presence from presencecache.
+ * This is called by the service tab whenever it comes up,
+ * so that it has uptodate presence information of the contacts
+ * that are present in the service tab.
+ *
+ * @since S60 5.0
+ **/
+ virtual TInt FetchPresenceFromCache() = 0;
+
+
+ /**
+ * Requests the XIMPFw to subscribe for presence
+ * grant request list subscription.
+ */
+ virtual void SubscribeForAuthorizationL() = 0;
+
+ /**
+ * sends PresenceGrantForPresentity response to server
+ *
+ * @since S60 5.0
+ * @param aContactId, id of the requesting party..
+ * @param aResponse , Etrue if accpeted else rejected.
+ * @return TInt error if any
+ *
+ */
+ virtual TInt SendPresenceGrantPresentityL( const TDesC& aContactId , TBool aResponse ) = 0;
+
+ /**
+ * IsChangeOwnStatusSupported by the protocol
+ *
+ * @since S60 5.0
+ * @return TBool ETrue if supported else EFalse.
+ */
+ virtual TBool IsChangeOwnStatusSupported() = 0;
+
+ /**
+ * IsStatusMsgSupported by the protocol
+ *
+ * @since S60 5.0
+ * @return TBool ETrue if supported else EFalse.
+ */
+ virtual TBool IsStatusMsgSupported() = 0;
+
+ /**
+ * IsAvatarSupported by the protocol
+ *
+ * @since S60 5.0
+ * @return TBool ETrue if supported else EFalse.
+ */
+ virtual TBool IsAvatarSupported() = 0;
+
+ /**
+ * SetAvatarSupported by the protocol
+ *
+ * @since S60 5.0
+ * @param aSupported, TBool ETrue if supported else EFalse.
+ */
+ virtual void SetAvatarSupported(TBool aSupported ) = 0;
+
+ /**
+ * 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
+ */
+ virtual TInt PublishOwnPresenceL(TVIMPSTEnums::TOnlineStatus aStatus,
+ const TDesC& aValue,
+ const TDesC& aFilename = KNullDesC,
+ const TDesC8& aMimetype = KNullDesC8,
+ TBool aIsAvatar = EFalse ) = 0 ;
+
+ /**
+ * Removes URI from block list
+ *
+ * @since S60 5.0
+ * @param aUriOfTheContact, URI to be removed
+ * @return error.
+ */
+ virtual TInt RemoveFromBlockListL( const TDesC& aUriOfTheContact ) = 0;
+
+ /**
+ * Adds URI to block list
+ *
+ * @since S60 5.0
+ * @param aContactId, URI to be added
+ * @return error.
+ */
+ virtual TInt AddToBlockListL( const TDesC& aContactId ) = 0;
+
+ /**
+ * Returns the blocked list.
+ * it returns the blocked list that it maintains locally in engine.
+ * @since S60 5.0
+ * @return blocked list.
+ */
+ virtual RPointerArray<HBufC>* GetBlockedList() = 0;
+
+ /**
+ * fetch blocked list from server to get the freshed blocked list.
+ *@param aOb,pointer of MVIMPSTEngineBlockedListFetchEventObserver,
+ * Notify that fetch of blocked list has been completed..
+ */
+ virtual void FetchBlockedListFromServerL(MVIMPSTEngineBlockedListFetchEventObserver* aOb) = 0;
+
+ /**
+ * function call from the engine on the completion of contact fetch operation
+ */
+ virtual void UpdatePresenceStateL() = 0;
+
+ /**
+ * Fetches the presence of singlecontact form presence cache
+ * @param aContact, user id of the ocntact who's presence
+ * needs to eb fetched.
+ */
+ virtual void FetchPresenceOfSingleContactL(const TDesC& aContact) = 0;
+
+ /**
+ * 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
+ */
+ virtual void UnsubscribeListsL() = 0;
+ /**
+ * virtual Destructor
+ */
+ virtual ~MVIMPSTEnginePresenceSubService()
+ {}
+
+ };
+
+#endif //MVIMPSTENGINEPRESENCESUBSERVICE_H
+
+