--- a/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp Tue Aug 31 16:04:06 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp Wed Sep 01 12:27:42 2010 +0100
@@ -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,31 +79,27 @@
iStatus = KRequestPending;
- 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;
+ 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;
}
//
@@ -113,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()
@@ -141,50 +157,64 @@
// 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;
+ }
+ else if((autolockState == EAutolockOff)||(autolockState == EAutolockStatusUninitialized))
+ {
+ Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Device UnLocked"));
+ iDialog->TryCancelQueryL(ESecUiNone);
+ 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;
- 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;
+ };
+ }
+ break;
+ default:
+ break;
+ }
+
+ Dprint(_L("[CSCPLockObserver]-> RunL() <<<"));
+}
- default:
- break;
- }
-
-
-
- Dprint(_L("CSCPLockObserver::RunL() END"));
-
- }
// ----------------------------------------------------------------------------
// CSCPLockObserver::RunError
// ----------------------------------------------------------------------------
@@ -192,6 +222,8 @@
{
return KErrNone;
}
+
+
//
// ----------------------------------------------------------
// CSCPLockObserver::DoCancel()
@@ -204,7 +236,8 @@
Dprint(_L("CSCPLockObserver::DoCancel() BEGIN"));
if(iSubscribedToEvent)
- iProperty.Cancel();
+ iProperty.Cancel();
+
iStatus = KErrNone;
Dprint(_L("CSCPLockObserver::DoCancel() END"));