diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstengine/src/cvimpstenginecontactmgmtextention.cpp --- a/uiservicetab/vimpstengine/src/cvimpstenginecontactmgmtextention.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,316 +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 CVIMPSTEngineContactMgmtExtention -* -*/ - -// INCLUDE FILES -#include "cvimpstenginecontactmgmtextention.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cvimpstenginerequestmapper.h" -#include "cvimpstenginerequest.h" -#include "tvimpstenums.h" - - -#include "vimpstallerrors.h" -#include "tvimpstconsts.h" - -#include "uiservicetabtracer.h" - -// Constants -_LIT( KListNameAllBuddy ,"buddylist" ); - - -// ================= MEMBER FUNCTIONS ======================= -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::NewL -// Two-phased constructor. -// --------------------------------------------------------- -CVIMPSTEngineContactMgmtExtention* CVIMPSTEngineContactMgmtExtention::NewL( - MXIMPContext& aPresenceCtx, - MPresentityGroups& aPresGroup, - CVIMPSTEngineRequestMapper& aRequestMapper) - { - TRACER_AUTO; - CVIMPSTEngineContactMgmtExtention* self = - CVIMPSTEngineContactMgmtExtention::NewLC( aPresenceCtx, - aPresGroup, - aRequestMapper - ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::NewLC -// Two-phased constructor. -// --------------------------------------------------------- -CVIMPSTEngineContactMgmtExtention* CVIMPSTEngineContactMgmtExtention::NewLC( - MXIMPContext& aPresenceCtx, - MPresentityGroups& aPresGroup, - CVIMPSTEngineRequestMapper& aRequestMapper) - { - TRACER_AUTO; - CVIMPSTEngineContactMgmtExtention* self = new (ELeave) - CVIMPSTEngineContactMgmtExtention(aPresenceCtx, aPresGroup,aRequestMapper); - CleanupStack::PushL( self ); - - return self; - } - - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::CVIMPSTEngineContactMgmtExtention -// --------------------------------------------------------- -CVIMPSTEngineContactMgmtExtention::CVIMPSTEngineContactMgmtExtention( - MXIMPContext& aPresenceCtx, - MPresentityGroups& aPresGroup, - CVIMPSTEngineRequestMapper& aRequestMapper) - : - iPresenceCtx(aPresenceCtx), - iPresGroup(aPresGroup), - iRequestMapper(aRequestMapper), - iSupported(TVIMPSTEnums::ESupportUnKnown) - { - - } - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::~CVIMPSTEngineContactMgmtExtention -// --------------------------------------------------------- -CVIMPSTEngineContactMgmtExtention::~CVIMPSTEngineContactMgmtExtention() - { - TRACER_AUTO; - } - - -// ----------------------------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::IsSupported() -// ----------------------------------------------------------------------------- -// -TVIMPSTEnums::FeatureSupport CVIMPSTEngineContactMgmtExtention::IsSupported() const - { - return iSupported; - } - - -// ----------------------------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::Type() -// ----------------------------------------------------------------------------- -// -TVIMPSTEnums::ExtentionType CVIMPSTEngineContactMgmtExtention::Type() const - { - return TVIMPSTEnums::EContactManagement; - } - - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::DeleteServerContactL -// --------------------------------------------------------- -TInt CVIMPSTEngineContactMgmtExtention::DeleteServerContactL( const TDesC& aContactListId, - const TDesC& aUserId ) - { - TRACER_AUTO; - TRACE( "DeleteServerContactL aContactListId = %s",&aContactListId ); - // err is initialized to KErrNone, b'coz if adaptation or presence is not supported then, - // the request should not be sent to the server, this is a hack as the voip - // writes the adaptation uid into settings even if presence is not supported. - // bug has to be raised to voip. - - TInt err = KErrNone; - - if (iSupported == TVIMPSTEnums::ESupported) - { - //if there is no contact list id, contact is added to default contact list - // here its "buddylist" - HBufC* listId = HBufC::NewLC(KPropertyMaxLength); // onto cleanup stack - TPtr listIdPtr = listId->Des(); - if(0 == aContactListId.Length()) - { - listIdPtr.Copy(KListNameAllBuddy); - } - else - { - listIdPtr.Copy(aContactListId) ; - } - MXIMPIdentity* listIdentity = CreateIdentityLC( listIdPtr ) ; - MXIMPIdentity* userIdentity = CreateIdentityLC( aUserId ) ; - - //not sure whether we can pass NULL for listIdentity / userIdentity - //lets leave it to the adaptation. - //so ignoring the NULL for listIdentity, userIdentity - TXIMPRequestId reqId = iPresGroup.RemovePresentityGroupMemberL( - *listIdentity, *userIdentity ); - - iRequestMapper.CreateRequestL(reqId, ETrue, EVIMPSTXimpOperationDeleteContact);// waite here - - // codescanner warning can be ignored as MXIMPIdentity doesn't allow to pass pointer - // to PopAnddestroy function. It gives panic - CleanupStack::PopAndDestroy(); //userIdentity - CleanupStack::PopAndDestroy(); //listIdentity - - CleanupStack::PopAndDestroy(); // listId; - - err = iReqResult; - } - return err; - } - - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::AddServerContactL -// --------------------------------------------------------- -TInt CVIMPSTEngineContactMgmtExtention::AddServerContactL(const TDesC& aContactList, - const TDesC& aUserId, - const TDesC& aNickname , - TBool aWaitToComplete /*= ETrue*/ ) - { - - TRACER_AUTO; - - // err is initialized to KErrNone, b'coz if adaptation or presence is not supported then, - // the request should not be sent to the server, this is a hack as the voip - // writes the adaptation uid into settings even if presence is not supported. - // bug has to be raised to voip. - TInt err = KErrNone; - - if (iSupported == TVIMPSTEnums::ESupported) - { - //if there is no contact list id, contact is added to default contact list - // here its "buddylist" - HBufC* listId = HBufC::NewLC(KPropertyMaxLength); // onto cleanup stack - TPtr listIdPtr = listId->Des(); - if(0 == aContactList.Length()) - { - listIdPtr.Copy(KListNameAllBuddy); - } - else - { - listIdPtr.Copy(aContactList) ; - } - - HBufC* userId = HBufC::NewLC(KPropertyMaxLength); // onto cleanup stack - TPtr userIdPtr = userId->Des(); - - //domain name is checked on the ui and command process side. - userIdPtr.Zero(); - userIdPtr.Append( aUserId ); - - // create identity - MXIMPIdentity* listIdentity = CreateIdentityLC( listIdPtr ) ; - MXIMPIdentity* userIdentity = CreateIdentityLC( userIdPtr ) ; // onto cleanup stack - - //not sure whether we can pass NULL for listIdentity / userIdentity - //lets leave it to the adaptation. - //so ignoring the NULL for listIdentity, userIdentity - TXIMPRequestId reqId = iPresGroup.AddPresentityGroupMemberL(*listIdentity, - *userIdentity, - aNickname) ; - - iRequestMapper.CreateRequestL(reqId, aWaitToComplete, EVIMPSTXimpOperationAddContact ); - - // codescanner warning can be ignored as MXIMPIdentity doesn't allow to pass pointer - // to PopAnddestroy function. It gives panic - CleanupStack::PopAndDestroy(); //userIdentity - CleanupStack::PopAndDestroy(); //listIdentity - - CleanupStack::PopAndDestroy(); //userId - CleanupStack::PopAndDestroy(); // listId - - err = iReqResult; - } - - return err; - } - - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::CreateIdentityLC -// --------------------------------------------------------- -MXIMPIdentity* CVIMPSTEngineContactMgmtExtention::CreateIdentityLC(const TDesC& aListId) - { - TRACER_AUTO; - - MXIMPObjectFactory& objFactory = iPresenceCtx.ObjectFactory(); - MXIMPIdentity* newIdentity = objFactory.NewIdentityLC(); - //no need to check for null as NewIdentityLC does not return null, - // if failed ot allocate memory it will leave with KErrNoMemory - newIdentity->SetIdentityL( aListId) ; - return newIdentity; - } - - -// --------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::HandleSessionContextEventL -// --------------------------------------------------------- -void CVIMPSTEngineContactMgmtExtention::HandleSessionContextEventL(const MXIMPContext& /*aContext*/, - const MXIMPBase& aEvent, - TXimpOperation aXimpOperation /*= EVIMPSTXimpOperationNoOperation*/ ) - { - - TRACER_AUTO; - - switch( aEvent.GetInterfaceId() ) - { - case MXIMPRequestCompleteEvent::KInterfaceId: - { - TRACE( "InsideCallbackswitch::MXIMPRequestCompleteEvent"); - if ( (EVIMPSTXimpOperationAddContact == aXimpOperation) - || (EVIMPSTXimpOperationDeleteContact == aXimpOperation) ) - { - 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 ) - { - req->StopWait() ; - iRequestMapper.RemoveRequestId(reqId); - } - } - break; - } - - default: - { - break; - } - } - } - -//---------------------------------------------------------------------------- -// CVIMPSTEngineContactMgmtExtention::SetSupported() -// ----------------------------------------------------------------------------- -// -void CVIMPSTEngineContactMgmtExtention::SetSupported(TVIMPSTEnums::FeatureSupport aSupported) - { - iSupported = aSupported; - } - -// end of file