--- a/uiservicetab/vimpstengine/src/cvimpstenginesessioncntxtobserver.cpp Thu Aug 19 09:41:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,665 +0,0 @@
-/*
-* 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: Implementation for CVIMPSTEngineSessionCntxtObserver
-*
-*/
-
-
-#include "cvimpstenginesessioncntxtobserver.h"
-
-
-
-#include "tvimpstenums.h"
-#include "cvimpstenginerequestmapper.h"
-#include "cvimpstenginerequest.h"
-#include "mvimpstenginesearchextentioneventobserver.h"
-#include "mvimpstenginesessioncntxtobserver.h"
-//ximpfw
-#include <presencegrantrequestinfo.h>
-#include <presentitygroupcontentevent.h>
-#include <ximpcontext.h>
-#include <presenceinfofilter.h>
-#include <presencefeatures.h>
-#include <presenceobjectfactory.h>
-#include <presenceinfo.h>
-#include <presenceauthorization.h>
-#include <ximpidentity.h>
-#include <ximpobjectfactory.h>
-#include <searchinfo.h>
-#include <searchevent.h>
-#include <ximpclient.h>
-#include <ximpidentity.h>
-#include <ximpstatus.h>
-#include <ximpcontextstateevent.h>
-#include <ximprequestcompleteevent.h>
-#include <presentitypresenceevent.h>
-#include <presenceblocklistevent.h>
-#include <presencegrantrequestlistevent.h>
-#include <ximpcontextstate.h>
-#include <searchelement.h>
-#include <searchkeysevent.h>
-#include <searchkeyinfo.h>
-#include <ximpfeatureinfo.h>
-
-#include "uiservicetabtracer.h"
-
-//xmppsettings
-#include "xmppparams.h"
-#include "xmppservicesettingsapi.h"
-
-
-// ============================ MEMBER FUNCTIONS ==============================
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::NewL
-// two phase construction
-// ---------------------------------------------------------
-CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewL( TUint32 aServiceId )
- {
- TRACER_AUTO;
- CVIMPSTEngineSessionCntxtObserver* self =
- CVIMPSTEngineSessionCntxtObserver::NewLC( aServiceId);
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::NewLC
-// two phase construction
-// ---------------------------------------------------------
-CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewLC(TUint32 aServiceId)
- {
- TRACER_AUTO;
- CVIMPSTEngineSessionCntxtObserver* self = new
- (ELeave) CVIMPSTEngineSessionCntxtObserver( aServiceId);
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::ConstructL
-// two phase construction
-// ---------------------------------------------------------
-void CVIMPSTEngineSessionCntxtObserver::ConstructL()
- {
- TRACER_AUTO;
- iRequestMapper = CVIMPSTEngineRequestMapper::NewL();
- iReqResult = KErrNone;
- iClient = MXIMPClient::NewClientL();
- //Create new sink to receive ximp context events
- iPresenceCtx = iClient->NewPresenceContextLC();
- // ignore code scanner warning, it gives panic
- CleanupStack::Pop();// because of LC method
-
- iFeatures = MPresenceFeatures::NewL(iPresenceCtx);
-
- //Stores the XIMPFw EventTypes Subscribed for
- iAcceptedEventTypes.Reset();
- iAcceptedEventTypes.AppendL( MXIMPRequestCompleteEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MXIMPContextStateEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MPresentityGroupContentEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MPresenceGrantRequestListEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MSearchEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MSearchKeysEvent::KInterfaceId );
- iAcceptedEventTypes.AppendL( MPresenceBlockListEvent::KInterfaceId );
-
- TArray< TInt32 > eventFilterArray = iAcceptedEventTypes.Array();
-
- // register this to prsence context
- iPresenceCtx->RegisterObserverL( *this, &eventFilterArray );
-
- }
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver
-// destructor
-// ---------------------------------------------------------
-CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver()
- {
- TRACER_AUTO;
- iObserverArray.Reset();
- iObserverArray.Close();
-
- iAcceptedEventTypes.Reset();
- iAcceptedEventTypes.Close();
- delete iFeatures;
-
- if(iPresenceCtx)
- {
- iPresenceCtx->UnregisterObserver( *this );
- delete iPresenceCtx;
- }
-
- delete iClient;
- delete iRequestMapper;
- }
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::CVIMPSTEngineSessionCntxtObserver
-// ---------------------------------------------------------
-CVIMPSTEngineSessionCntxtObserver::CVIMPSTEngineSessionCntxtObserver(TUint32 aServiceId)
-:iServiceId(aServiceId),
- iBindStatus( TVIMPSTEnums::EVIMPSTBindNotDone )
- {
- }
-
-// ===========================================================================
-// FROM MPRFWximpCONTEXTOBSERVER
-// ===========================================================================
-//
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::HandlePresenceContextEvent
-// ---------------------------------------------------------
-void CVIMPSTEngineSessionCntxtObserver::HandlePresenceContextEvent(
- const MXIMPContext& aContext,
- const MXIMPBase& aEvent )
- {
- TRACER_AUTO;
- TRAP_IGNORE(DoHandlePresenceContextEventL( aContext, aEvent ));
- }
-
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::GetCompletedReqResult
-//
-// ---------------------------------------------------------
-TInt CVIMPSTEngineSessionCntxtObserver::GetCompletedReqResult() const
- {
- return iReqResult;
- }
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::CVIMPSTEngineSessionCntxtObserver
-//
-// ---------------------------------------------------------
-CVIMPSTEngineRequestMapper* CVIMPSTEngineSessionCntxtObserver::
- GetRequestMapper() const
- {
- return iRequestMapper;
- }
-
-
-// ---------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::ContextBindStatus
-//
-// ---------------------------------------------------------
-TVIMPSTEnums::TVIMPSTBindStatus CVIMPSTEngineSessionCntxtObserver::ContextBindStatus()
- {
- return iBindStatus;
- }
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::ServerBindL
-// ---------------------------------------------------------------------------
-//
-TInt CVIMPSTEngineSessionCntxtObserver::ServerBindL(TUid aProtocolUid)
- {
- TRACER_AUTO;
- TInt err = KErrNotFound;
- //Bind context to desired presence service
- if ( TVIMPSTEnums::EVIMPSTBindDone != iBindStatus )
- {
- TXIMPRequestId operationId = TXIMPRequestId::Null();
- TRAP( err, operationId = iPresenceCtx->BindToL(
- aProtocolUid, iServiceId ) );
- if ( err )
- {
- // XIMP queues all operations except bind operation. If there is
- // unbind operation pending in ximp side, bind call will leave
- // with KErrAlreadyExists. Client side is not ideal place to
- // handle this type of logic so to work around this problem, this
- // case is flagged here. When unbind completes, rebind is done.
- // If unbind is called between these operations, flag is set
- // ESVCEPresenceBindNotDone to avoid bind if service was disabled
- TRACE( "err: %d", err);
- iBindStatus = TVIMPSTEnums::EVIMPSTBindFailureMode;
- }
- else
- {
- //create the requestmapper for the corresponidng reuqest id.
- iRequestMapper->CreateRequestL(operationId,ETrue,EVIMPSTXimpOperationBind);
- iBindStatus = TVIMPSTEnums::EVIMPSTBindDone;
- iFeatureSupported = EVIMPSTFeatureUnknown;
- TRAP(err,IdentifySupportedFeaturesL());
- }
- }
- else
- {
- err = KErrNone;
- }
- return err;
- }
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineVoIPPrecenseHandler::ServerUnBindL
-// ---------------------------------------------------------------------------
-//
-TInt CVIMPSTEngineSessionCntxtObserver::ServerUnBindL(
- TBool aDoUnsubscribe )
- {
- TRACER_AUTO;
- TInt err = KErrNotFound;
- if ( TVIMPSTEnums::EVIMPSTBindDone == iBindStatus )
- {
- if ( aDoUnsubscribe )
- {
- iBindStatus = TVIMPSTEnums::EVIMPSTUnBinding;
- }
-
- TRACE( " do unbind");
- TXIMPRequestId operationId = TXIMPRequestId::Null();
- TRAP( err, operationId = iPresenceCtx->UnbindL());
- iBindStatus = TVIMPSTEnums::EVIMPSTUnBindWaiting;
- iRequestMapper->CreateRequestL(operationId,EFalse,EVIMPSTXimpOperationUnBind) ;
- iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
- iFeatureSupported = EVIMPSTFeatureUnknown;
- }
- else if ( TVIMPSTEnums::EVIMPSTBindFailureMode == iBindStatus )
- {
- // Disable flag here. If service is really disabled, we must not
- // rebind when unbind completes.
- iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
- }
- return err;
- }
-
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC(const MXIMPBase& aEvent )
- {
- TRACER_AUTO;
- const MPresentityPresenceEvent& event =
- *TXIMPGetInterface< const MPresentityPresenceEvent >::From(
- aEvent, MXIMPBase::EPanicIfUnknown );
- HBufC* retValue = NULL;
- retValue = event.PresentityId().Identity().AllocLC();
- if(!retValue)
- {
- retValue = KNullDesC().AllocLC();
- }
- return retValue;
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL(
- const MXIMPContext& aContext,
- const MXIMPBase& aEvent )
- {
- TRACER_AUTO;
- const TInt32 eventId = aEvent.GetInterfaceId();
-
- switch( aEvent.GetInterfaceId() )
- {
- case MXIMPRequestCompleteEvent::KInterfaceId:
- {
-
- TRACE( "InsideCallbackswitch::MXIMPRequestCompleteEvent start");
- const MXIMPRequestCompleteEvent* event =
- TXIMPGetInterface< const MXIMPRequestCompleteEvent >::From(
- aEvent, MXIMPBase::EPanicIfUnknown );
-
- iReqResult = event->CompletionResult().ResultCode();
- const TXIMPRequestId& reqId = event->RequestId();
- // Note:FindRequestId does not pass the ownership. hanece req
- // should not be deleted.
- CVIMPSTEngineRequest *req = iRequestMapper->FindRequestId( reqId );
-
- if ( req )
- {
- TXimpOperation operation = req->RequestType();
-
- //contact mgmt & search will remove their own requests
- //presence subservice should also do the same
- //untill then use the below if check
- //TBD
- if ( (operation>EVIMPSTXimpOperationNoOperation)&&
- (operation<=EVIMPSTXimpOperationUnsubscribe) )
- {
- req->StopWait() ;
- iRequestMapper->RemoveRequestId(reqId);
- }
-
- TInt count = iObserverArray.Count();
-
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,
- aEvent,
- operation);
- }
- }
- TRACE("InsideCallbackswitch::MXIMPRequestCompleteEvent end");
- break;
- }
-
- case MXIMPContextStateEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::MXIMPContextStateEvent");
- break;
- }
- case MPresentityPresenceEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::::MPresentityPresenceEvent start");
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MPresentityPresenceEvent end");
- break;
- }
- case MPresentityGroupContentEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::::MPresentityGroupContentEvent start");
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MPresentityGroupContentEvent end");
- break;
- }
- case MPresenceGrantRequestListEvent::KInterfaceId:
- {
- TRACE("InsideCallbackswitch::::MPresenceGrantRequestListEvent start");
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MPresenceGrantRequestListEvent end");
- break;
- }
-
- case MSearchEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::::MSearchEvent start");
-
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MSearchEvent end");
-
- break;
- }
- case MSearchKeysEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::::MSearchKeysEvent start");
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MSearchKeysEvent end");
-
- break;
- }
- case MPresenceBlockListEvent::KInterfaceId:
- {
- TRACE( "InsideCallbackswitch::::MPresenceBlockListEvent start");
- TInt count = iObserverArray.Count();
- for(TInt i = 0; i < count; i++)
- {
- iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
- }
- TRACE( "InsideCallbackswitch::::MPresenceBlockListEvent end");
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL
-// ---------------------------------------------------------------------------
-//
-MPresenceAuthorization&
-CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL()
- {
- TRACER_AUTO;
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
- __ASSERT_ALWAYS( &iFeatures->PresenceAuthorization(),
- User::Leave( KErrNotSupported ));
- return iFeatures->PresenceAuthorization();
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::XimpPresenceWatchingL
-// ---------------------------------------------------------------------------
-//
-MPresenceWatching&
-CVIMPSTEngineSessionCntxtObserver::XimpPresenceWatchingL()
- {
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
- __ASSERT_ALWAYS( &iFeatures->PresenceWatching(),
- User::Leave( KErrNotSupported ));
- return iFeatures->PresenceWatching();
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::XimpPresentityGroupsL
-// ---------------------------------------------------------------------------
-//
-MPresentityGroups&
-CVIMPSTEngineSessionCntxtObserver::XimpPresentityGroupsL()
- {
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
- __ASSERT_ALWAYS( &iFeatures->PresentityGroups(),
- User::Leave( KErrNotSupported ));
- return iFeatures->PresentityGroups();
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::XimpPresencePublishingL
-// ---------------------------------------------------------------------------
-//
-MPresencePublishing&
-CVIMPSTEngineSessionCntxtObserver::XimpPresencePublishingL()
- {
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
- __ASSERT_ALWAYS( &iFeatures->PresencePublishing(),
- User::Leave( KErrNotSupported ));
- return iFeatures->PresencePublishing();
- }
-
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::XimpPresenceContext
-// ---------------------------------------------------------------------------
-//
-MXIMPContext&
-CVIMPSTEngineSessionCntxtObserver::XimpPresenceContextL()
- {
- __ASSERT_ALWAYS( iPresenceCtx, User::Leave( KErrNotFound ));
- return *iPresenceCtx;
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::PresenceObjectFactory
-// ---------------------------------------------------------------------------
-//
-MPresenceObjectFactory& CVIMPSTEngineSessionCntxtObserver::PresenceObjectFactoryL() const
- {
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotFound ));
- return iFeatures->PresenceObjectFactory();
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::PresenceFeaturesL
-// ---------------------------------------------------------------------------
-//
-MPresenceFeatures& CVIMPSTEngineSessionCntxtObserver::PresenceFeaturesL() const
- {
- __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotFound ));
- return *iFeatures;
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::RegisterObserver
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTEngineSessionCntxtObserver::RegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
- {
- TRACER_AUTO;
- if (aObserver)
- {
-
- TInt index = iObserverArray.Find(aObserver);
- if( index == KErrNotFound )
- {
- iObserverArray.Append( aObserver );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
- {
- TRACER_AUTO;
- if (aObserver)
- {
- TInt index = iObserverArray.Find(aObserver);
-
- if( index >=0 )
- {
- iObserverArray.Remove( index );
- iObserverArray.Compress();
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL()
- {
- TRACER_AUTO;
- using namespace NXIMPFeature::Presence;
- using namespace NXIMPFeature::InstantMessage;
- using namespace NXIMPFeature::Search;
- using namespace NXIMPFeature::PresentityGroups;
-
- MXIMPFeatureInfo* ximpCtxFeats = iPresenceCtx->GetContextFeaturesLC();
- //get the supproted features from ximpfw adaptation.
- if( ximpCtxFeats )
- {
- CleanupStack::Pop() ; //iXimpctxFeat
-
- const MDesC8Array& supportedFeatures = ximpCtxFeats->FeatureIds();
-
- TInt count = supportedFeatures.MdcaCount();
-
- for(TInt index = 0; index < count; index++)
- {
- TPtrC8 feature = supportedFeatures.MdcaPoint(index);
-
- if ( !(iFeatureSupported & EVIMPSTFeaturePublish) && !(KPublish().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeaturePublish;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureFetch) && !(KFetch().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureFetch;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureSubscribe) && !(KSubscribe().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureSubscribe;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureUnsubscribe) && !(KUnsubscribe().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureUnsubscribe;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureAddContact) && !(KAddContact().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureAddContact;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureDeleteContact) && !(KDeleteContact().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureDeleteContact;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureBlock) && !(KBlock().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureBlock;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureUnBlock) && !(KUnBlock().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureUnBlock;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureAvatar) && !(KAvatar().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureAvatar;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureCreateGroup) && !(KCreate().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureCreateGroup;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureDeleteGroup) && !(KDelete().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureDeleteGroup;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureInstantMessage) && !(KInstantMessage().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureInstantMessage;
-
- }
- else if ( !(iFeatureSupported & EVIMPSTFeatureSearch) && !(KSearch().Compare(feature)) )
- {
- iFeatureSupported = iFeatureSupported | EVIMPSTFeatureSearch;
-
- }
-
- }
-
- delete ximpCtxFeats;
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CVIMPSTEngineSessionCntxtObserver::GetSupportedFeatures
-// ---------------------------------------------------------------------------
-//
-TInt CVIMPSTEngineSessionCntxtObserver::GetSupportedFeatures()
- {
- return iFeatureSupported;
- }
-
-// end of file
-
-