diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/src/CamCallStateAo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/src/CamCallStateAo.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2007 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: Listens for changes to phone call state* +*/ + + + +// INCLUDE FILES +#include +#include +#include + +#include "CamUtility.h" +#include "CamCallStateAo.h" +#include "CamPanic.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================ MEMBER FUNCTIONS =============================== +#ifdef _DEBUG +void ExpandStateDebug( TPSCTsyCallState aVal ) + { + switch ( aVal ) + { + case EPSCTsyCallStateUninitialized: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => Uninit") ); + break; + case EPSCTsyCallStateNone: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => NONE") ); + break; + case EPSCTsyCallStateAlerting: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => ALERTING") ); + break; + case EPSCTsyCallStateRinging: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => RINGING") ); + break; + case EPSCTsyCallStateDialling: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => DIALLING") ); + break; + case EPSCTsyCallStateAnswering: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => ANSWERING") ); + break; + case EPSCTsyCallStateDisconnecting: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => DISCONNECTING") ); + break; + case EPSCTsyCallStateConnected: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => CONNECTED") ); + break; + case EPSCTsyCallStateHold: + PRINT(_L("Camera CCamCallStateAo::RunL NEW STATUS => HOLD") ); + break; + } + } +#endif // _DEBUG + + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::CCamCallStateAo +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CCamCallStateAo::CCamCallStateAo( MCamCallStateObserver* aObserver ) : CActive( EPriorityStandard ) + { + PRINT( _L("Camera => CCamCallStateAo::CCamCallStateAo") ); + __ASSERT_DEBUG( aObserver != NULL, CamPanic(ECamPanicNullImage) ); + CActiveScheduler::Add( this ); + + iObserver = aObserver; + } + + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCamCallStateAo* CCamCallStateAo::NewL( MCamCallStateObserver* aObserver ) + { + CCamCallStateAo* self = new( ELeave ) CCamCallStateAo( aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// ----------------------------------------------------------------------------- +// CCamSelfTimer::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CCamCallStateAo::ConstructL() + { + PRINT( _L("Camera => CCamCallStateAo::ConstructL") ); + + TInt ret = iProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallState ); + PRINT1( _L("CCamCallStateAo::ConstructL attaching property ret %d"), ret ); + + if ( ret == KErrNone ) + { + // Will subscribe to the attribute required + RunL(); + } + else + { + // If an error occurred, we can't get call state info which we really need + // so leave + User::Leave( ret ); + } + + PRINT( _L("Camera <= CCamCallStateAo::ConstructL") ); + } + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::~CCamCallStateAo +// Destructor +// ----------------------------------------------------------------------------- +// +CCamCallStateAo::~CCamCallStateAo() + { + PRINT( _L("Camera => ~CCamCallStateAo") ); + Cancel(); + PRINT( _L("Camera <= ~CCamCallStateAo") ); + } + + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::DoCancel +// Cancels an outstanding request +// ----------------------------------------------------------------------------- +// +void CCamCallStateAo::DoCancel() + { + iProperty.Close(); + } + + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::RunL +// Called when a request has completed. +// ----------------------------------------------------------------------------- +// +void CCamCallStateAo::RunL() + { + PRINT(_L("Camera => CCamCallStateAo::RunL") ); + iProperty.Subscribe( iStatus ); + PRINT(_L("Camera CCamCallStateAo::RunL subscribed") ); + + SetActive(); + PRINT(_L("Camera CCamCallStateAo::RunL set active") ); + + TInt val = KErrNotFound; + TInt ret = iProperty.Get( val ); + + if ( val != KErrNotFound && ret != KErrNotFound ) + { + TPSCTsyCallState callState = static_cast( val ); +#ifdef _DEBUG + ExpandStateDebug( callState ); +#endif + PRINT(_L("Camera CCamCallStateAo::RunL calling callback") ); + iObserver->CallStateChanged( callState, ret ); + PRINT(_L("Camera CCamCallStateAo::RunL returned from callback") ); + } + else + { + iObserver->CallStateChanged( EPSCTsyCallStateUninitialized, ret ); + } + PRINT(_L("Camera <= CCamCallStateAo::RunL") ); + } + + +// ----------------------------------------------------------------------------- +// CCamCallStateAo::RunError +// Called when an error has occurred. +// ----------------------------------------------------------------------------- +// +TInt CCamCallStateAo::RunError( TInt aError ) + { + iObserver->CallStateChanged( EPSCTsyCallStateUninitialized, aError ); + return KErrNone; + } + +// End of File