diff -r 2b7283837edb -r 3104fc151679 imstutils/imconversationview/imcvuiengine/src/cimcvenginecontextobserver.cpp --- a/imstutils/imconversationview/imcvuiengine/src/cimcvenginecontextobserver.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,298 +0,0 @@ -/* -* Copyright (c) 2007-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: single context observer implementation -* -*/ - -#include "cimcvenginecontextobserver.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "imcvuiliterals.h" -#include "mimcvenginenewmessagehandler.h" -#include "imcvlogger.h" -#include -// ============================ MEMBER FUNCTIONS ============================== - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::NewL -// two phase construction -// --------------------------------------------------------- -CIMCVEngineContextObserver* CIMCVEngineContextObserver::NewL() - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::NewL() start") ); - CIMCVEngineContextObserver* self = - CIMCVEngineContextObserver::NewLC(); - CleanupStack::Pop( self ); - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::NewL() end") ); - return self; - } - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::NewLC -// two phase construction -// --------------------------------------------------------- -CIMCVEngineContextObserver* CIMCVEngineContextObserver::NewLC() - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::NewLC() start") ); - CIMCVEngineContextObserver* self = new - (ELeave) CIMCVEngineContextObserver(); - CleanupStack::PushL( self ); - self->ConstructL(); - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::NewLC() end") ); - return self; - } - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::ConstructL -// two phase construction -// --------------------------------------------------------- -void CIMCVEngineContextObserver::ConstructL() - { - } - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::~CIMCVEngineContextObserver -// destructor -// --------------------------------------------------------- -CIMCVEngineContextObserver::~CIMCVEngineContextObserver() - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::~CIMCVEngineContextObserver() start") ); - if(iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::~CIMCVEngineContextObserver() end") ); - } - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::CIMCVEngineContextObserver -// --------------------------------------------------------- -CIMCVEngineContextObserver::CIMCVEngineContextObserver() : -iCurrentReqType(EReqUnknown) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::CIMCVEngineContextObserver() start") ); - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::CIMCVEngineContextObserver() end") ); - } - -// =========================================================================== -// FROM MPRFWximpCONTEXTOBSERVER -// =========================================================================== -// -// --------------------------------------------------------- -// CIMCVEngineContextObserver::HandleximpContextEvent -// --------------------------------------------------------- -void CIMCVEngineContextObserver::HandlePresenceContextEvent( - const MXIMPContext& /*aContext*/, - const MXIMPBase& aEvent ) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::HandlePresenceContextEvent() start") ); - const TInt32 eventType = aEvent.GetInterfaceId(); - - switch( eventType ) - { - case MXIMPRequestCompleteEvent::KInterfaceId: - { - const MXIMPRequestCompleteEvent* event = - TXIMPGetInterface< const MXIMPRequestCompleteEvent >::From( aEvent, MXIMPBase::EPanicIfUnknown ); - - TXIMPRequestId reqId = event->RequestId(); - - const MXIMPStatus& status = event->CompletionResult(); - - TInt err = status.ResultCode(); - //Login request has been issued - if ((iCurrentXIMPReq == reqId) && (ELoginReq == iCurrentReqType)) - { - //Login is an synchronous call - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - if(KErrNone == err ) - { - iLoggedIn = ETrue; - } - else - { - iLoggedIn = EFalse; - } - - iCurrentReqType = EReqUnknown; - if(iSessionObserver) - { - TRAP_IGNORE( iSessionObserver->HandleConnectionEventL( ELoggedIn, KErrNone ) ); - } - } - //Logout request has been issued - else if ((iCurrentXIMPReq == reqId) && (ELogoutReq == iCurrentReqType)) - { - //Login is an synchronous call - if ( iWait.IsStarted() ) - { - iWait.AsyncStop(); - } - iLoggedIn = EFalse; - iCurrentReqType = EReqUnknown; - if(iSessionObserver) - { - TRAP_IGNORE( iSessionObserver->HandleConnectionEventL(ELoggedOut, KErrNone ) ); - } - } - //SendMessage request has been issued - else - { - // for message delivery report - if( iSessionObserver && iLoggedIn ) - { - TRAP_IGNORE( iSessionObserver->HandleDeliveryReportL(reqId, status.ResultCode() ) ); - } - } - break; - } - - case MXIMPContextStateEvent::KInterfaceId: - { - // what do we do with context state event - // state of the context can be associated with the - const MXIMPContextStateEvent* ctxtStateEvent = - TXIMPGetInterface< const MXIMPContextStateEvent >::From( aEvent, - MXIMPBase::EPanicIfUnknown ); - const MXIMPStatus* fwStatus = ctxtStateEvent->StateChangeReason(); - const MXIMPContextState& cState = ctxtStateEvent->ContextState(); - MXIMPContextState::TState state = cState.ContextState(); - - if (MXIMPContextState::EInactive == state ) - { - //No request of Login/Logout has been issued by CV - //Hence this might be a server initiated disconnect - //handle properly - if( (iSessionObserver) && (EReqUnknown == iCurrentReqType) ) - { - TRAP_IGNORE( iSessionObserver->HandleConnectionEventL(EForcedLoggedOut, KImErrServiceForceClosedSession ) ); - } - - } - break; - } - default: - { - - break; - } - } - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::HandlePresenceContextEvent() end") ); - } - - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::GetCompletedReqResult -// -// --------------------------------------------------------- -void CIMCVEngineContextObserver::GetConnectedSessionL(MXIMPContext& aContext, TInt aServiceId, TUid aProtocolUid) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::GetConnectedSessionL() start") ); - //TUid protocolUid = TUid::Uid( KProtocolUidTelepathy ); - if ( (!iLoggedIn) && (EReqUnknown == iCurrentReqType) ) - { - //iOngoingOperation = TIMCVStateEnums::EIMCVLogging; - iCurrentXIMPReq = aContext.BindToL( aProtocolUid, aServiceId ) ; - iCurrentReqType = ELoginReq; - - if( !iWait.IsStarted() ) - { - // Code scanner warning "active object called without checking - // whether it is active or cancelling it first" ignored because - // CActiveSchedulerWait is not an active object - iWait.Start(); // CSI: 10 # See above - } - - //iOngoingOperation = TIMCVStateEnums::EIMCVUnknown; - } - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::GetConnectedSessionL() end") ); - - } -// --------------------------------------------------------- -// CIMCVEngineContextObserver::GetCompletedReqResult -// -// --------------------------------------------------------- -void CIMCVEngineContextObserver::ReleaseConnectionL(MXIMPContext& aContext) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::ReleaseConnectionL() start") ); - if ( (iLoggedIn) && (EReqUnknown == iCurrentReqType) ) - { - //iOngoingOperation = TIMCVStateEnums::EIMCVLoggingOut; - iCurrentXIMPReq = aContext.UnbindL() ; - iCurrentReqType = ELogoutReq; - if( !iWait.IsStarted() ) - { - // Code scanner warning "active object called without checking - // whether it is active or cancelling it first" ignored because - // CActiveSchedulerWait is not an active object - iWait.Start(); // CSI: 10 # See above - } - } - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::ReleaseConnectionL() end") ); - - } - -// --------------------------------------------------------- -// CIMCVEngineContextObserver::IsLoggedIn -// -// --------------------------------------------------------- -TBool CIMCVEngineContextObserver::IsLoggedIn() const - { - return iLoggedIn; - } -// --------------------------------------------------------- -// CIMCVEngineContextObserver::RegisterObserver -// -// --------------------------------------------------------- -void CIMCVEngineContextObserver::RegisterObserver(MIMCVEngineServiceSessionHandler* aObserver) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::RegisterObserver() start") ); - iSessionObserver = aObserver; - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::RegisterObserver() end") ); - } -// --------------------------------------------------------- -// CIMCVEngineContextObserver::UnRegisterObserver -// -// --------------------------------------------------------- -void CIMCVEngineContextObserver::UnRegisterObserver(MIMCVEngineServiceSessionHandler* /*aObserver*/) - { - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::UnRegisterObserver() start") ); - // do not call delete - // not owned by this class - iSessionObserver = NULL; - IM_CV_LOGS(TXT("CIMCVEngineContextObserver::UnRegisterObserver() end") ); - } -// --------------------------------------------------------- -// CIMCVEngine::SetLoggedIn() -// --------------------------------------------------------- -// -void CIMCVEngineContextObserver::SetLoggedIn(TBool aState) - { - iLoggedIn = aState; - } - -// end of file -