securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp
changeset 56 25a3fbb5e4d3
parent 51 f479c7dc25d6
child 61 1cc4c46c2963
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Thu Sep 02 21:22:45 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Fri Sep 17 08:35:02 2010 +0300
@@ -40,7 +40,7 @@
 #include <StringLoader.h>
 #include <RemoteLockSettings.h>
 #include <featmgr.h>
-
+#include <hb/hbwidgets/restricted/hbdevicedialogsextensionsymbian_r.h>
 #include "SecQueryUi.h"
 #include <hb/hbwidgets/hbdevicemessageboxsymbian.h>
 
@@ -399,6 +399,22 @@
     RMobilePhone::TMobilePassword unblockCode; // Required here only as a dummy parameter 
 
 
+		/* TODO not sure if needs to check against the typed, or the hashed */
+		/*
+    RArray<TDevicelockPolicies> aFailedPolicies;
+    TDevicelockPolicies failedPolicy;
+    TInt retLockcode = KErrNone;
+    RMobilePhone::TMobilePassword aISACode;
+    TInt scpFlags = 0;
+    RDEBUG("scpClient.VerifyCurrentLockcode", 0);
+    // this validate on ISA . No need to do iPhone.VerifySecurityCode
+    retLockcode = scpClient.VerifyCurrentLockcode(aRemoteLockCode, aISACode, aFailedPolicies, scpFlags);
+    RDEBUG("retLockcode", retLockcode);
+
+    RDEBUG("aISACode", 0);
+    RDEBUGSTR(aISACode);
+		*/
+
     securityCode = aRemoteLockCode;
     RDEBUG( "EMobilePhoneVerifySecurityCode", EMobilePhoneVerifySecurityCode );
     iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
@@ -1220,6 +1236,10 @@
     RDEBUG("aResourceID", aResourceID);
 
     CHbDeviceMessageBoxSymbian* messageBox = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
+    const TInt KCriticalLevel = 2;
+    RDEBUG("KCriticalLevel", KCriticalLevel);
+    HbDeviceDialogsExtensionSymbian::SetShowLevel(messageBox, KCriticalLevel);
+    RDEBUG("done KCriticalLevel", KCriticalLevel);
     CleanupStack::PushL(messageBox);
     TInt satisfactoryIcon = 0;	// might change later, in some scenarios
     _LIT(KText, "ShowResultNoteL: ");
@@ -1430,6 +1450,10 @@
             titleTr.Append(_L("EDevicelockTotalPolicies"));
             title.Append(_L("EDevicelockTotalPolicies"));
             break;
+        case KErrTDevicelockPolicies+EDevicelockTotalPolicies+1:
+            titleTr.Append(_L("SCP server doesn't support this UID"));
+            title.Append(_L("SCP server doesn't support this UID"));
+            break;
 
         default: // " "
             titleTr.Append(_L("Specific Error"));
@@ -2284,10 +2308,29 @@
         }
 
     // check current code before proceeding
+    RSCPClient scpCurrClient;
+    TInt tCurrRet = scpCurrClient.Connect();
+    RDEBUG("tCurrRet", tCurrRet);
+    CleanupClosePushL(scpCurrClient);
+    RArray<TDevicelockPolicies> aCurrFailedPolicies;
+    TInt retCurrLockcode = KErrNone;
+    RMobilePhone::TMobilePassword aCurrISACode;
+    TInt scpCurrFlags = 0;
+    RDEBUG("scpClient.VerifyCurrentLockcode", 0);
+    // this validate on ISA . No need to do iPhone.VerifySecurityCode
+    retCurrLockcode = scpCurrClient.VerifyCurrentLockcode(oldPassword, aCurrISACode, aCurrFailedPolicies, scpCurrFlags);
+    RDEBUG("retCurrLockcode", retCurrLockcode);
+
+    RDEBUG("aCurrISACode", 0);
+    RDEBUGSTR(aCurrISACode);
+    scpCurrClient.Close();
+    RDEBUG("PopAndDestroy", 0);
+    CleanupStack::PopAndDestroy(); //scpCurrClient
+
     RDEBUG("EMobilePhoneVerifySecurityCode", EMobilePhoneVerifySecurityCode);
     iWait->SetRequestType(EMobilePhoneVerifySecurityCode);	// 0x59F1
     RDEBUG("VerifySecurityCode", 0);
-    iPhone.VerifySecurityCode(iWait->iStatus, secCodeType, oldPassword, required_fourth);
+    iPhone.VerifySecurityCode(iWait->iStatus, secCodeType, aCurrISACode /* not oldPassword !!! */, required_fourth);
     RDEBUG("WaitForRequestL", 0);
     res = iWait->WaitForRequestL();
     RDEBUG("WaitForRequestL res", res);
@@ -2349,6 +2392,7 @@
        if(retLockcode == KErrNone )
        	{
 	       RDEBUG( "scpClient.VerifyNewLockcodeAgainstPolicies", 0 );
+	       RDEBUGSTR( newPassword );
 	       retLockcode = scpClient.VerifyNewLockcodeAgainstPolicies( newPassword, aFailedPolicies );
 	       RDEBUG( "retLockcode", retLockcode );
 	       RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
@@ -2423,6 +2467,10 @@
                     RArray<TDevicelockPolicies> aFailedPolicies;
                     TDevicelockPolicies failedPolicy;
                     TInt retLockcode = KErrNone;
+                    RDEBUG("newScpCode", 0);
+                    RDEBUGSTR( newScpCode );
+                    RDEBUG("oldScpCode", 0);
+                    RDEBUGSTR( oldScpCode );
                     retLockcode = scpClient.StoreLockcode(newScpCode, oldScpCode, aFailedPolicies);
                     RDEBUG( "retLockcode", retLockcode );
                     RDEBUG( "KErrAccessDenied", KErrAccessDenied );
@@ -2438,6 +2486,8 @@
                     if(retLockcode!=KErrNone)
                     	{
                     	RDEBUG("Undo password change because retLockcode", retLockcode);
+                    	if(retLockcode==KErrAccessDenied)	// this happens if CSCPSession::HandleAuthenticationMessageL doesn't include the UID
+                    		retLockcode = KErrTDevicelockPolicies+EDevicelockTotalPolicies+1;
                     	ShowResultNoteL(retLockcode, CAknNoteDialog::EConfirmationTone);
                     	
                     	// go back to previous password.