--- 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"));