--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstengine/inc/cvimpstenginesessioncntxtobserver.h Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,316 @@
+/*
+* 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: ximp context observer
+*
+*/
+
+
+#ifndef CVIMPSTENGINESESSIONCNTXTOBSERVER_H_
+#define CVIMPSTENGINESESSIONCNTXTOBSERVER_H_
+
+
+// INCLUDES
+#include <e32base.h>
+
+#include "tvimpstenums.h"
+
+#include <ximpcontextobserver.h>
+#include <searchelement.h>
+
+class MVIMPSTServiceListObserver;
+class CVIMPSTEngineRequestMapper;
+class MXIMPContext;
+class MVIMPSTEngineSearchExtentionEventObserver;
+class MPresenceGrantRequestListEvent;
+class MSearchKeysEvent;
+class MPresenceFeatures;
+class MXIMPClient;
+class MVIMPSTEngineSessionCntxtObserver;
+class MPresenceAuthorization;
+class MPresenceWatching;
+class MPresentityGroups;
+class MPresencePublishing;
+class MPresenceObjectFactory;
+
+// CLASS DESCRIPTION
+
+/**
+ * ximp context observer
+ * @lib vimpstengine.lib
+ * @since S60 5.0
+ */
+NONSHARABLE_CLASS( CVIMPSTEngineSessionCntxtObserver ) : public CBase,
+ public MXIMPContextObserver
+
+
+ {
+ //for testcases.
+ friend class T_VimpstEngineSessionCntxtObserver;
+ friend class T_VimpstEnginePresenceSubService;
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ * @param aSettingsId: settings id.
+ * @param aAdapterUid: Uid of the ximpfw adaptation.
+ * @return CVIMPSTEngineSessionCntxtObserver new instance of this class
+ */
+ static CVIMPSTEngineSessionCntxtObserver*
+ CVIMPSTEngineSessionCntxtObserver::NewL(TUint32 aServiceId);
+ /**
+ * Two-phased constructor.
+ * @param aSettingsId: settings id.
+ * @param aAdapterUid: Uid of the ximpfw adaptation.
+ * @return CVIMPSTEngineSessionCntxtObserver new instance of this class
+ */
+ static CVIMPSTEngineSessionCntxtObserver*
+ CVIMPSTEngineSessionCntxtObserver::NewLC(TUint32 aServiceId);
+
+
+ /**
+ * C++ default destructor.
+ * ~CVIMPSTEngineSessionCntxtObserver
+ */
+ ~CVIMPSTEngineSessionCntxtObserver();
+
+ /**
+ * GetCompletedReqResult
+ * @return TInt the result code
+ */
+ TInt GetCompletedReqResult() const;
+
+ /**
+ * GetRequestMapper
+ * @return CVIMPSTEngineRequestMapper pointer to RequestMapper
+ */
+ CVIMPSTEngineRequestMapper* GetRequestMapper() const;
+
+ /**
+ * Presence bind
+ *
+ * @since S60 5.0
+ * @param aProtocolUid - uid of the ximpfw adaptation.
+ * @return TInt, error if any.
+ */
+ TInt ServerBindL(TUid aProtocolUid);
+
+ /**
+ * Presence unbind
+ *
+ * @since S60 5.0
+ * @param aDoUnsubscribe, do unsubscribe before unbind.
+ * Unsubscribe can not be done if unbind is triggered by
+ * lost network.
+ * @return TInt, error if any.
+ */
+ TInt ServerUnBindL( TBool aDoUnsubscribe );
+
+ /**
+ * Returns pointer to XIMP presence authorization interface.
+ * This method must be used to get access.
+ * If feature is not supported by current
+ * presence adapter, leaves with KErrNotSupported.
+ *
+ * @since S60 3.2
+ * @return MPresenceAuthorization reference
+ */
+ MPresenceAuthorization& XimpAuthorizationL();
+
+ /**
+ * Returns pointer to XIMP presence watching interface.
+ * This method must be used to get access.
+ * If feature is not supported by current
+ * presence adapter, leaves with KErrNotSupported.
+ *
+ * @since S60 3.2
+ * @return MPresenceWatching reference
+ */
+ MPresenceWatching& XimpPresenceWatchingL();
+
+ /**
+ * Returns pointer to XIMP presence presentity groups interface.
+ * This method must be used to get access.
+ * If feature is not supported by current
+ * presence adapter, leaves with KErrNotSupported.
+ *
+ * @since S60 3.2
+ * @return MPresentityGroups reference
+ */
+ MPresentityGroups& XimpPresentityGroupsL();
+
+ /**
+ * Returns pointer to XIMP presence publishing interface.
+ * This method must be used to get access.
+ * If feature is not supported by current
+ * presence adapter, leaves with KErrNotSupported.
+ *
+ * @since S60 3.2
+ * @return MPresentityGroups reference
+ */
+ MPresencePublishing& XimpPresencePublishingL();
+
+ /**
+ * Gets reference to object factory interface.
+ *
+ * Returned object factory interface is used
+ * to instantiate presence objects.
+ *
+ * @return Object factory interface.
+ * No ownership is returned caller.
+ */
+ MPresenceObjectFactory& PresenceObjectFactoryL() const ;
+
+ MPresenceFeatures& PresenceFeaturesL() const;
+
+ /**
+ * Gets reference to Presencecontext.
+ *
+ * Returned Presencecontext interface is used
+ * to instantiate object factory.
+ *
+ * @since 5.0
+ * @return Object factory interface.
+ * No ownership is returned caller.
+ */
+ MXIMPContext& XimpPresenceContextL();
+
+ /**
+ * Register observer from getting notified of ximp events.
+ *
+ * @since 5.0
+ * @param aObserver observer to be called when ximp events are received.
+ * Unregister is done by session context when the presence context gets
+ * unbinded. The Requester must register each time when XIMP Context gets Binded.
+ * Otherwise he will not get the event
+ */
+ void RegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver);
+
+ /**
+ * get the supproted features form the ximp adaptation
+ *
+ * @since 5.0
+ * @return MDesC8Array array of supported features.
+ */
+ TInt GetSupportedFeatures();
+
+
+ /**
+ * get the supproted features form the ximp adaptation
+ *
+ * @since 5.0
+ * @return MDesC8Array array of supported features.
+ */
+ TVIMPSTEnums::TVIMPSTBindStatus ContextBindStatus();
+
+ private:
+
+ /**
+ * Unregister observer from getting notified of ximp events.
+ *
+ * @since 5.0
+ * @param aObserver observer to be called when ximp events are received.
+ */
+ void UnRegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver);
+
+ /**
+ * HandleximpContextEvent method from context obsrver
+ * ximp framework
+ * @param aContext
+ * @param aEvent, event
+ */
+
+ void HandlePresenceContextEvent( const MXIMPContext& aContext,
+ const MXIMPBase& aEvent );
+
+ /**
+ * Handles presence callbacks
+ *
+ * @since S60 3.2
+ * @param aContext, context
+ * @param aEvent, event
+ * @return void
+ */
+ void DoHandlePresenceContextEventL(
+ const MXIMPContext& aContext,
+ const MXIMPBase& aEvent );
+
+ /**
+ * Resolves and allocates presense uri from ximp operation.
+ *
+ * @since S60 5.0
+ * @param aEvent, used to get the ximpidentity.
+ * @return HBufC, presence uri from operation. Ownsership passed.
+ */
+ HBufC* UriFromXimpOperationLC(const MXIMPBase& aEvent );
+ private:
+
+ /**
+ *second phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * CVIMPSTEngineSessionCntxtObserver
+ * @param aSettingsId: settings id.
+ * @param aAdapterUid: Uid of the ximpfw adaptation.
+ */
+ CVIMPSTEngineSessionCntxtObserver(TUint32 aServiceId);
+
+ /**
+ * Identifies the Features supported by the Adaptation
+ * and stores the information in iFeatureSupported
+ */
+ void IdentifySupportedFeaturesL();
+
+
+ private: //Data
+ // not own
+ TUint32 iServiceId;
+
+ //Result code from waited request
+ TInt iReqResult;
+
+ // Current presence bind status
+ TVIMPSTEnums::TVIMPSTBindStatus iBindStatus;
+
+ //OWN: request mapper to mapp each request
+ CVIMPSTEngineRequestMapper* iRequestMapper;
+
+ // own , client for presence framework
+ MXIMPClient* iClient;
+
+ // own ,presence context to prsence framework
+ MXIMPContext* iPresenceCtx;
+
+ // owned pointer to presence plugin
+ MPresenceFeatures* iFeatures;
+
+ //Stores the XIMPFw EventTypes Subscribed for
+ RArray< TInt32 > iAcceptedEventTypes;
+
+ // Own, array of observers.
+ RPointerArray<MVIMPSTEngineSessionCntxtObserver> iObserverArray;
+
+ //Stores the XIMP Features Supported
+ TInt iFeatureSupported;
+
+
+ };
+
+
+
+#endif //CVIMPSTENGINESESSIONCNTXTOBSERVER_H_
+
+