diff -r 504e41245867 -r 007508d6e57b terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp --- a/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp Wed Apr 14 16:50:34 2010 +0300 +++ b/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp Tue Apr 27 17:31:13 2010 +0300 @@ -24,7 +24,6 @@ #include "SCPQueryDialog.h" #include "SCPDebug.h" - // ================= MEMBER FUNCTIONS ======================= // // ---------------------------------------------------------- @@ -55,9 +54,9 @@ CSCPLockObserver::~CSCPLockObserver() { - Dprint(_L("CSCPLockObserver::~CSCPLockObserver")); - + Dprint(_L("CSCPLockObserver::~CSCPLockObserver >>>")); Cancel(); + Dprint(_L("CSCPLockObserver::~CSCPLockObserver <<<")); } // // ---------------------------------------------------------- @@ -80,39 +79,27 @@ iStatus = KRequestPending; - switch(iType) - { - case ESecUiDeviceLockObserver: - - Dprint(_L("CSCPLockObserver::Start() Device Lock Observer")); - - iProperty.Attach(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus); - break; -#if 0 - case ESecUiRequestStateObserver: - - Dprint(_L("CSCPLockObserver::Start() Request State Observer")); - - iProperty.Attach(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel); - break; -#endif - case ESecUiCallStateObserver: - - Dprint(_L("CSCPLockObserver::Start() Call State Observer")); - - iProperty.Attach(KPSUidCtsyCallInformation, KCTsyCallState); - break; + switch(iType) { + case ESecUiDeviceLockObserver: + + Dprint(_L("CSCPLockObserver::Start() Device Lock Observer")); + + iProperty.Attach(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus); + break; + case ESecUiCallStateObserver: { + Dprint(_L("CSCPLockObserver::Start() Call State Observer")); + iProperty.Attach(KPSUidCtsyCallInformation, KCTsyCallState); + } + break; - default: - break; - } + default: + break; + } iProperty.Subscribe(iStatus); + iSubscribedToEvent = ETrue; SetActive(); - iSubscribedToEvent = ETrue; - - Dprint(_L("CSCPLockObserver::Start() END")); - + Dprint(_L("CSCPLockObserver::Start() END")); return KErrNone; } // @@ -121,9 +108,30 @@ // C++ constructor // ---------------------------------------------------------- // -CSCPLockObserver::CSCPLockObserver(CSCPQueryDialog* aDialog, TInt aType) : CActive(0), iDialog(aDialog), iSubscribedToEvent(EFalse), iType(aType) - { - } +CSCPLockObserver :: CSCPLockObserver(CSCPQueryDialog* aDialog, TInt aType) : CActive(0), + iDialog(aDialog), iType(aType), + iInformCallEnding(EFalse), iSubscribedToEvent(EFalse) { + + TInt lStatus; + RProperty :: Get(KPSUidCtsyCallInformation, KCTsyCallState, lStatus); + + switch(lStatus) { + default: + case EPSCTsyCallStateUninitialized: + case EPSCTsyCallStateNone: + iInformCallEnding = EFalse; + break; + case EPSCTsyCallStateDisconnecting: + case EPSCTsyCallStateAlerting: + case EPSCTsyCallStateHold: + case EPSCTsyCallStateRinging: + case EPSCTsyCallStateDialling: + case EPSCTsyCallStateAnswering: + case EPSCTsyCallStateConnected: + iInformCallEnding = ETrue; + break; + }; +} // // ---------------------------------------------------------- // CSCPLockObserver::ConstructL() @@ -149,64 +157,57 @@ // Called by Active Scheduler // ---------------------------------------------------------- // -void CSCPLockObserver::RunL() - { - - Dprint(_L("CSCPLockObserver::RunL() BEGIN")); - +void CSCPLockObserver :: RunL() { + Dprint(_L("[CSCPLockObserver]-> RunL() >>>")); - switch(iType) - { - case ESecUiDeviceLockObserver: - TInt autolockState; - iProperty.Get( autolockState ); - if (autolockState > EAutolockOff) - { - - Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Device Lock")); - - iDialog->TryCancelQueryL(ESecUiDeviceLocked); - iSubscribedToEvent = EFalse; + switch(iType) { + case ESecUiDeviceLockObserver: + TInt autolockState; + iProperty.Get(autolockState); + + if(autolockState > EAutolockOff) { + Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Device Lock")); + iDialog->TryCancelQueryL(ESecUiDeviceLocked); + iSubscribedToEvent = EFalse; + } + break; + case ESecUiCallStateObserver: { + TInt callState; + iProperty.Get(callState); + Dprint( (_L("CSCPLockObserver::RunL() callState before Start() : %d"), callState )); + Start(); + + switch(callState) { + default: + break; + case EPSCTsyCallStateNone: + if(iInformCallEnding) { + Dprint( (_L("CSCPLockObserver::RunL() Branched to EPSCTsyCallStateNone"))); + iDialog->TryCancelQueryL(EEnded); + iInformCallEnding = EFalse; } + break; + case EPSCTsyCallStateAlerting: + case EPSCTsyCallStateHold: + case EPSCTsyCallStateRinging: + case EPSCTsyCallStateDialling: + case EPSCTsyCallStateAnswering: + case EPSCTsyCallStateConnected: { + Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Active Call")); + TRAPD(lErr, iDialog->TryCancelQueryL(EInProgress)); + Dprint( (_L("CSCPLockObserver::RunL() lErr : %d"), lErr )); + iInformCallEnding = ETrue; + } break; -#if 0 - case ESecUiRequestStateObserver: - TInt requestState; - iProperty.Get( requestState ); - if(requestState == ESecurityUIsQueryRequestCanceled) - { - - Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Req Canceled")); - - iDialog->TryCancelQueryL(EEikBidCancel); - iSubscribedToEvent = EFalse; - } - break; -#endif - case ESecUiCallStateObserver: - TInt callState; - iProperty.Get( callState ); - - Dprint( (_L("CSCPLockObserver::RunL() callState : %d"),callState )); - if(callState == EPSCTsyCallStateDisconnecting) - { - - Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Active Call")); - - iDialog->TryCancelQueryL(EPSCTsyCallStateDisconnecting); - iSubscribedToEvent = EFalse; - } - break; - - default: - break; + }; } - - - - Dprint(_L("CSCPLockObserver::RunL() END")); + break; + default: + break; + } - } + Dprint(_L("[CSCPLockObserver]-> RunL() <<<")); +} // // ---------------------------------------------------------- // CSCPLockObserver::DoCancel() @@ -219,7 +220,8 @@ Dprint(_L("CSCPLockObserver::DoCancel() BEGIN")); if(iSubscribedToEvent) - iProperty.Cancel(); + iProperty.Cancel(); + iStatus = KErrNone; Dprint(_L("CSCPLockObserver::DoCancel() END"));