securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp
branchRCL_3
changeset 22 03674e5abf46
parent 21 09b1ac925e3f
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Tue Aug 31 16:04:40 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Wed Sep 01 12:19:59 2010 +0100
@@ -1,24 +1,26 @@
 /*
- * Copyright (c) 2002 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:  Provides api for changing security settings.
- *
- *
- */
+* Copyright (c) 2002 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:  Provides api for changing security settings.
+*
+*
+*/
+
 
 #include <etelmm.h>
 #include <exterror.h>
 #include <textresolver.h>
+#include <SecUi.rsg>
 #include <aknnotedialog.h>
 #include <mmtsy_names.h>
 #include <centralrepository.h> 
@@ -29,42 +31,39 @@
 #include <PSVariables.h>   // Property values
 #include <securityuisprivatepskeys.h>
 #include <startupdomainpskeys.h>
-#include "SecUi.h"
 #include "secuisecuritysettings.h"
+#include "SecUiAutoLockSettingPage.h"
 #include "secui.hrh"
 #include "secuisecurityhandler.h"
 #include "secuicodequerydialog.h"
 #include "SecUiWait.h"
-#include <hb/hbcore/hbtextresolversymbian.h>
+
+#ifdef RD_REMOTELOCK
 #include <aknnotewrappers.h>
 #include <StringLoader.h>
 #include <RemoteLockSettings.h>
+#include "SecUiRemoteLockSettingPage.h"
+#endif // RD_REMOTELOCK
 #include <featmgr.h>
-
-#include "SecQueryUi.h"
-#include <hb/hbwidgets/hbdevicemessageboxsymbian.h>
-
-/*****************************************************
- *    Series 60 Customer / TSY
- *    Needs customer TSY implementation
- *****************************************************/
+    /*****************************************************
+    *    Series 60 Customer / TSY
+    *    Needs customer TSY implementation
+    *****************************************************/
 //  LOCAL CONSTANTS AND MACROS  
 
-const TInt KTriesToConnectServer(2);
-const TInt KTimeBeforeRetryingServerConnection(50000);
-const TInt PhoneIndex(0);
+const TInt KTriesToConnectServer( 2 );
+const TInt KTimeBeforeRetryingServerConnection( 50000 );
+const TInt PhoneIndex( 0 );
 
-const TInt KMaxNumberOfPINAttempts(3); // is this valid also for PIN2 ?
-
-#define ESecUiTypeLock                  0x00100000
-#define KErrTDevicelockPolicies					0x10207837
+const TInt KMaxNumberOfPINAttempts(3);
+const TInt KLastRemainingInputAttempt(1);
 
 // ================= MEMBER FUNCTIONS =======================
 //
 // ----------------------------------------------------------
 // CSecuritySettings::NewL()
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C CSecuritySettings* CSecuritySettings::NewL()
     {
     CSecuritySettings* self = new (ELeave) CSecuritySettings();
@@ -78,7 +77,7 @@
 // CSecuritySettings::CSecuritySettings()
 // constructor
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C CSecuritySettings::CSecuritySettings()
     {
     }
@@ -87,93 +86,91 @@
 // CSecuritySettings::ConstructL()
 // Symbian OS constructor.
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C void CSecuritySettings::ConstructL()
     {
     /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
     /*****************************************************
-     *    Series 60 Customer / TSY
-     *    Needs customer TSY implementation
-     *****************************************************/
+    *    Series 60 Customer / TSY
+    *    Needs customer TSY implementation
+    *****************************************************/
 
-    RDEBUG("0", 0);
-    TInt err(KErrGeneral);
-    TInt thisTry(0);
+    TInt err( KErrGeneral );
+    TInt thisTry( 0 );
     iWait = CWait::NewL();
     RTelServer::TPhoneInfo PhoneInfo;
     /* All server connections are tried to be made KTriesToConnectServer times because occasional
-     fails on connections are possible, at least on some servers */
-
+    fails on connections are possible, at least on some servers */
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ConstructL()"));
+    #endif
+    
     FeatureManager::InitializeLibL();
     // connect to ETel server
-    while ((err = iServer.Connect()) != KErrNone && (thisTry++) <= KTriesToConnectServer)
+    while ( ( err = iServer.Connect() ) != KErrNone && ( thisTry++ ) <= KTriesToConnectServer )
         {
-        User::After( KTimeBeforeRetryingServerConnection);
+        User::After( KTimeBeforeRetryingServerConnection );
         }
-    User::LeaveIfError(err);
+    User::LeaveIfError( err );
 
     // load TSY
-    err = iServer.LoadPhoneModule(KMmTsyModuleName);
-    if (err != KErrAlreadyExists)
+    err = iServer.LoadPhoneModule( KMmTsyModuleName );
+    if ( err != KErrAlreadyExists )
         {
         // May return also KErrAlreadyExists if something else
         // has already loaded the TSY module. And that is
         // not an error.
-        User::LeaveIfError(err);
+        User::LeaveIfError( err );
         }
 
     // open phones
     User::LeaveIfError(iServer.SetExtendedErrorGranularity(RTelServer::EErrorExtended));
     User::LeaveIfError(iServer.GetPhoneInfo(PhoneIndex, PhoneInfo));
-    User::LeaveIfError(iPhone.Open(iServer, PhoneInfo.iName));
+    User::LeaveIfError(iPhone.Open(iServer,PhoneInfo.iName));
     User::LeaveIfError(iCustomPhone.Open(iPhone));
 
-    iSecurityHandler = new (ELeave) CSecurityHandler(iPhone);
-    _LIT(KFileName, "secui_");
-    _LIT(KPath, "z:/resource/qt/translations/");
-    RDEBUG("HbTextResolverSymbian", 0);
-    TBool result = HbTextResolverSymbian::Init(KFileName, KPath);
-    RDEBUG("result", result);
-
+    iSecurityHandler = new( ELeave ) CSecurityHandler( iPhone );
     }
 //
 // ----------------------------------------------------------
 // CSecuritySettings::~CSecuritySettings()
 // Destructor
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C CSecuritySettings::~CSecuritySettings()
     {
     /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
     /*****************************************************
-     *    Series 60 Customer / TSY
-     *    Needs customer TSY implementation
-     *****************************************************/
+    *    Series 60 Customer / TSY
+    *    Needs customer TSY implementation
+    *****************************************************/
     delete iSecurityHandler;
 
     // Cancel active requests
-    if (iWait->IsActive())
-        {
-        RDEBUG("CancelAsyncRequest", 0);
+    if(iWait->IsActive())
+    {
+        #if defined(_DEBUG)
+	    RDebug::Print(_L("(SECUI)CManualSecuritySettings::~CSecuritySettings() CANCEL REQ"));
+	    #endif
         iPhone.CancelAsyncRequest(iWait->GetRequestType());
-
-        switch (iWait->GetRequestType())
-            { //inform query that it has beeen canceled
-            case EMobilePhoneSetLockSetting:
-            case EMobilePhoneSetFdnSetting:
-                RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestCanceled);
-                break;
-            default:
-                break;
-            }
-
-        }
+        
+        switch(iWait->GetRequestType())
+            {   //inform query that it has beeen canceled
+                case EMobilePhoneSetLockSetting:
+                case EMobilePhoneSetFdnSetting:
+                    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestCanceled);
+                    break;
+                default:
+                    break;
+            }                            
+        
+    }
     // close phone
     if (iPhone.SubSessionHandle())
         iPhone.Close();
@@ -194,21 +191,173 @@
 // CSecuritySettings::ChangePinL()
 // Changes PIN1
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C void CSecuritySettings::ChangePinL()
     {
-    RDEBUG("0", 0);
-    RMobilePhone::TMobilePassword iOldPassword;
-    RMobilePhone::TMobilePassword iNewPassword;
-    TInt iFlags = ESecUiTypeLock;
-    iOldPassword.Copy(_L(""));
-    iNewPassword.Copy(_L(""));
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    
+    TInt simState;
+    TInt err( KErrGeneral );
+    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+    User::LeaveIfError( err );
+    TBool simRemoved(simState == ESimNotPresent);
+
+    if ( simRemoved )
+        {
+        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+        return;
+        }
+
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinL()"));
+    #endif    
+    RMobilePhone::TMobilePhoneSecurityCode secCodeType;
+    secCodeType = RMobilePhone::ESecurityCodePin1;
+
+    RMobilePhone::TMobilePassword oldPassword;
+    RMobilePhone::TMobilePassword newPassword;
+    RMobilePhone::TMobilePassword verifcationPassword;
+    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+    RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
+    RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+
+    CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(verdlg);
+
+    CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(newdlg);
+
+    CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);       
+    CleanupStack::PushL(dlg);
+
+    RMobilePhone::TMobilePhoneLock lockType;
+    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+    
+    lockType = RMobilePhone::ELockICC;
+
+    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+    iWait->SetRequestType(EMobilePhoneGetLockInfo);
+    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+    TInt res = iWait->WaitForRequestL();
+    User::LeaveIfError(res);
 
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangePinL")); // no need to translate. Not used
-    TInt iShowError = 1;
-    TInt err = ChangePinParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
-    RDEBUG("err", err);
+    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+        {    
+        CleanupStack::PopAndDestroy(3,verdlg);
+        ShowResultNoteL(R_PIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+        return;
+        }
+    
+    CleanupStack::Pop(); // dlg
+    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+    iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
+    res = iWait->WaitForRequestL();
+    User::LeaveIfError(res);
+    // ask pin
+    if( codeInfo.iRemainingEntryAttempts >= KMaxNumberOfPINAttempts )
+            res = dlg->ExecuteLD(R_PIN_QUERY);
+    else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
+       {
+         HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
+         res = dlg->ExecuteLD(R_PIN_QUERY, *queryPrompt);
+         CleanupStack::PopAndDestroy(queryPrompt);
+       }
+    else
+       {
+         HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN_ATTEMPT);
+         res = dlg->ExecuteLD(R_PIN_QUERY, *queryPrompt);
+         CleanupStack::PopAndDestroy(queryPrompt);   
+       }  
+    
+      if( !res )
+        {
+        CleanupStack::PopAndDestroy(2,verdlg);
+        return;
+        }      
+    CleanupStack::Pop(); // newdlg
+    // new pin code query
+     if (!(newdlg->ExecuteLD(R_NEW_PIN_CODE_QUERY)))
+        {
+        CleanupStack::PopAndDestroy(verdlg);
+        return;
+        }
+
+    CleanupStack::Pop(); // verdlg
+    // verification code query
+    if (!(verdlg->ExecuteLD(R_VERIFY_NEW_PIN_CODE_QUERY)))
+            return;
+        
+    while (newPassword.CompareF(verifcationPassword) != 0) 
+        {
+        // codes do not match -> note -> ask new pin and verification codes again  
+        ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
+    
+        newPassword = _L("");
+        verifcationPassword = _L("");
+
+        // new pin code query
+        CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+        if (!(newdlg->ExecuteLD(R_NEW_PIN_CODE_QUERY)))
+              return;
+        
+        // verification code query
+        CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+        if (!(verdlg->ExecuteLD(R_VERIFY_NEW_PIN_CODE_QUERY)))
+            return;
+        }            
+        
+    // send code
+    passwords.iOldPassword = oldPassword;
+    passwords.iNewPassword = newPassword;
+    iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+    iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
+    res = iWait->WaitForRequestL();
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinL(): RETURN CODE: %d"), res);
+    #endif
+    switch(res)
+        {
+        case KErrNone:
+            {
+            // code changed 
+            ShowResultNoteL(R_PIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+            break;
+            }        
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            {    
+            // code was entered erroneously
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            ChangePinL();
+            break;
+            }    
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            {
+            // Pin1 blocked! 
+            return;
+            }
+        case KErrGsm0707OperationNotAllowed:
+            {
+            // not allowed with this sim
+            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+            return;
+            }
+        case KErrAbort:
+            {
+            break;
+            }
+        default:
+            {
+            ShowErrorNoteL(res);
+            ChangePinL();
+            break;
+            }
+        }
+
     }
 
 //
@@ -216,21 +365,174 @@
 // CSecuritySettings::ChangeUPinL()
 // Changes Universal PIN
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C void CSecuritySettings::ChangeUPinL()
     {
-    RDEBUG("0", 0);
-    RMobilePhone::TMobilePassword iOldPassword;
-    RMobilePhone::TMobilePassword iNewPassword;
-    TInt iFlags = ESecUiTypeLock;
-    iOldPassword.Copy(_L(""));
-    iNewPassword.Copy(_L(""));
-
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangeUPinL")); // no need to translate. Not used
-    TInt iShowError = 1;
-    TInt err = ChangeUPinParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
-    RDEBUG("err", err);
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinL()"));
+        #endif
+        TInt simState;
+        TInt err( KErrGeneral );
+        err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+        User::LeaveIfError( err );
+        TBool simRemoved(simState == ESimNotPresent);
+    
+        if ( simRemoved )
+            {
+            ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+            return;
+            }
+    
+        RMobilePhone::TMobilePhoneSecurityCode secCodeType;
+        secCodeType = RMobilePhone::ESecurityUniversalPin;
+    
+        RMobilePhone::TMobilePassword oldPassword;
+        RMobilePhone::TMobilePassword newPassword;
+        RMobilePhone::TMobilePassword verifcationPassword;
+        RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+        RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
+        RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+    
+        CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+        CleanupStack::PushL(verdlg);
+    
+        CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+        CleanupStack::PushL(newdlg);
+    
+        CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);       
+        CleanupStack::PushL(dlg);
+    
+        RMobilePhone::TMobilePhoneLock lockType;
+        RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+        
+        lockType = RMobilePhone::ELockUniversalPin;
+        
+        RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+        iWait->SetRequestType(EMobilePhoneGetLockInfo);
+        iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+        TInt res = iWait->WaitForRequestL();
+        User::LeaveIfError(res);
+    
+        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+            {    
+            CleanupStack::PopAndDestroy(3,verdlg);
+            ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+            return;
+            }
+        
+        CleanupStack::Pop(); // dlg
+        // ask pin
+        iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+        iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
+        res = iWait->WaitForRequestL();
+        User::LeaveIfError(res);
+            
+        if( codeInfo.iRemainingEntryAttempts >= KMaxNumberOfPINAttempts )
+            res = dlg->ExecuteLD(R_UPIN_QUERY);
+        else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
+            {
+              HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_UPIN_ATTEMPTS, codeInfo.iRemainingEntryAttempts);
+              res = dlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
+              CleanupStack::PopAndDestroy(queryPrompt);
+            }
+        else
+            {
+              HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_UPIN_ATTEMPT);
+              res = dlg->ExecuteLD(R_UPIN_QUERY, *queryPrompt);
+              CleanupStack::PopAndDestroy(queryPrompt);   
+            }        
+        
+        
+        
+         if( !res )
+            {
+            CleanupStack::PopAndDestroy(2,verdlg);
+            return;
+            }      
+        CleanupStack::Pop(); // newdlg
+        // new pin code query
+         if (!(newdlg->ExecuteLD(R_NEW_UPIN_CODE_QUERY)))
+            {
+            CleanupStack::PopAndDestroy(verdlg);
+            return;
+            }
+    
+        CleanupStack::Pop(); // verdlg
+        // verification code query
+        if (!(verdlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_QUERY)))
+                return;
+            
+        while (newPassword.CompareF(verifcationPassword) != 0) 
+            {
+            // codes do not match -> note -> ask new pin and verification codes again  
+            ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
+        
+            newPassword = _L("");
+            verifcationPassword = _L("");
+    
+            // new pin code query
+            CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+            if (!(newdlg->ExecuteLD(R_NEW_UPIN_CODE_QUERY)))
+                  return;
+            
+            // verification code query
+            CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);
+            if (!(verdlg->ExecuteLD(R_VERIFY_NEW_UPIN_CODE_QUERY)))
+                return;
+            }            
+            
+        // send code
+        passwords.iOldPassword = oldPassword;
+        passwords.iNewPassword = newPassword;
+        iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+        iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
+        res = iWait->WaitForRequestL();
+        #if defined(_DEBUG)
+        RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinL(): RETURN CODE: %d"), res);
+        #endif
+        switch(res)
+            {
+            case KErrNone:
+                {
+                // code changed 
+                ShowResultNoteL(R_UPIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+                break;
+                }        
+            case KErrGsm0707IncorrectPassword:
+            case KErrAccessDenied:
+                {    
+                // code was entered erroneously
+                ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+                ChangeUPinL();
+                break;
+                }    
+            case KErrGsmSSPasswordAttemptsViolation:
+            case KErrLocked:
+                {
+                return;
+                }
+            case KErrGsm0707OperationNotAllowed:
+                {
+                // not allowed with this sim
+                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                return;
+                }
+            case KErrAbort:
+                {
+                break;
+                }
+            default:
+                {
+                ShowErrorNoteL(res);
+                ChangeUPinL();
+                break;
+                }
+            }
+      }
 
     }
 
@@ -239,873 +541,48 @@
 // CSecuritySettings::ChangePin2L()
 // Changes PIN2
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C void CSecuritySettings::ChangePin2L()
     {
-    RDEBUG("0", 0);
-    RMobilePhone::TMobilePassword iOldPassword;
-    RMobilePhone::TMobilePassword iNewPassword;
-    TInt iFlags = ESecUiTypeLock;
-    iOldPassword.Copy(_L(""));
-    iNewPassword.Copy(_L(""));
-
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangePin2L")); // no need to translate. Not used
-    TInt iShowError = 1;
-    TInt err = ChangePin2ParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
-    RDEBUG("err", err);
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangeSecCodeL()
-// Changes security code 
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C void CSecuritySettings::ChangeSecCodeL()
-    {
-    RDEBUG("0", 0);
-    RMobilePhone::TMobilePassword iOldPassword;
-    RMobilePhone::TMobilePassword iNewPassword;
-    TInt iFlags = 0;
-    iOldPassword.Copy(_L(""));
-    iNewPassword.Copy(_L(""));
-
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangeSecCodeL")); // no need to translate. Not used
-    TInt iShowError = 1;
-    TInt err = ChangeSecCodeParamsL(iOldPassword, iNewPassword, iFlags, iCaption, iShowError);
-    RDEBUG("err", err);
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangeAutoLockPeriodL()
-// Changes autolock period
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangeAutoLockPeriodL(TInt aPeriod)
-    {
-    TInt ret = 0;
-    RDEBUG("aPeriod", aPeriod);
-    RMobilePhone::TMobilePassword iOldPassword;
-    TInt iFlags = 0;
-    TInt iShowError = 1;
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangeAutoLockPeriodL")); // no need to translate. Not used
-    iOldPassword.Copy(_L(""));
-    ret = ChangeAutoLockPeriodParamsL(aPeriod, iOldPassword, iFlags, iCaption, iShowError);
-    RDEBUG("ret", ret);
-    return ret;
-    }
-
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangeRemoteLockStatusL()
-// Changes remote lock status (on/off)
-// ----------------------------------------------------------
-// no qtdone
-EXPORT_C TInt CSecuritySettings::ChangeRemoteLockStatusL(TBool& aRemoteLockStatus, TDes& aRemoteLockCode, TInt aAutoLockPeriod)
-    {
-    TInt retValue(KErrNone);
-    RDEBUG("aRemoteLockStatus", aRemoteLockStatus);
-    RDEBUG("aAutoLockPeriod", aAutoLockPeriod);
-
-    if (aRemoteLockStatus)
-        {
-        aRemoteLockStatus = ETrue;
-
-        // If user wishes to enable remote lock
-        // a new remote lock code is required.
-        // RemoteLockCodeQueryL also 
-        retValue = RemoteLockCodeQueryL(aRemoteLockCode);
-        }
-    else
-        {
-        aRemoteLockStatus = EFalse;
-        retValue = KErrNone;
-        // TODO this should calculate aAutoLockPeriod itself, and not trust the input
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePin2L()"));
+    #endif
+    TInt simState;
+    TInt err( KErrGeneral );
+    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+    User::LeaveIfError( err );
+    TBool simRemoved(simState == ESimNotPresent);
 
-        // Check whether AutoLock is enabled (timeout value greater 
-        // than zero) or not. If AutoLock is enabled the domestic OS 
-        // device lock should be left enabled.
-        if (aAutoLockPeriod == 0)
-            {
-            // Disable lock setting from domestic OS
-            retValue = RemoteLockSetLockSettingL(EFalse);
-            }
-        else
-            {
-            // If AutoLock is enabled, don't disable the DOS device lock
-            // Re-set (enable) the domestic OS device lock because as a 
-            // side effect it requires the security code from the user
-            retValue = RemoteLockSetLockSettingL(ETrue);
-            }
-        }
-    RDEBUG( "retValue", retValue );
-    return retValue;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::RemoteLockCodeQueryL()
-// Pops up remote lock code query. Requires user to enter a new remote lock 
-// code (RemoteMsg) twice and if they match enables the domestic OS device lock (which as 
-// a side effect pops up security code query).
-// Note: if the RemoteMsg is cancelled, nevertheless the lock is activated. This is done because the code is askedirst, and the only way to do so is by enabling the lock.
-// This is not a problem, because:
-// a) first the RemoteMsg is enable, and this function is used to change it
-// b) if lock was disabled, the "change RemoteMsg" menu is not available.
-// ----------------------------------------------------------
-// qtdone
-TInt CSecuritySettings::RemoteLockCodeQueryL(TDes& aRemoteLockCode)
-    {
-
-    TInt retValue(KErrNone);
-
-    // This is done because lock-code needs to be asked first.
-    // Enable lock setting in domestic OS. It is safe to enable the 
-    // lock setting since RemoteLock API requires remote locking to
-    // be enabled when changing or setting the remote lock message.
-    retValue = RemoteLockSetLockSettingL(ETrue);
-    RDEBUG( "retValue", retValue );
-    if (retValue != KErrNone)
-        return retValue;
-    aRemoteLockCode.Zero();
-
-    TInt queryAccepted = KErrCancel;
-    queryAccepted = KErrCancel;
-    CSecQueryUi * iSecQueryUi;
-    iSecQueryUi = CSecQueryUi::NewL();
-    // this queries both, and verifies itself
-    TBuf<0x100> title;
-    title.Zero();
-    HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_rem_code"));
-    title.Append(stringHolder->Des());
-    CleanupStack::PopAndDestroy(stringHolder);
-    title.Append(_L("|"));
-    HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("Verify"));
-    title.Append(stringHolder2->Des());
-    CleanupStack::PopAndDestroy(stringHolder2);
-    queryAccepted = iSecQueryUi->SecQueryDialog(title, aRemoteLockCode, SEC_REMOTELOCK_CODE_MIN_LENGTH, SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiAlphaSupported
-            | ESecUiCancelSupported | ESecUiEmergencyNotSupported | ESecUiNone);
-    RDEBUG("aRemoteLockCode", 0);
-    RDEBUGSTR(aRemoteLockCode);
-    RDEBUG("queryAccepted", queryAccepted);
-    delete iSecQueryUi;
-    if (queryAccepted != KErrNone)
-        return KErrAbort;
-
-    // Check that the new remote lock code doesn't match the security code of the device.
-    RMobilePhone::TMobilePhoneSecurityCode secCodeType = RMobilePhone::ESecurityCodePhonePassword;
-    RMobilePhone::TMobilePassword securityCode;
-    RMobilePhone::TMobilePassword unblockCode; // Required here only as a dummy parameter 
-
-
-    securityCode = aRemoteLockCode;
-    RDEBUG( "EMobilePhoneVerifySecurityCode", EMobilePhoneVerifySecurityCode );
-    iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
-    RDEBUG( "VerifySecurityCode", 0 );
-    iPhone.VerifySecurityCode(iWait->iStatus, secCodeType, securityCode, unblockCode);
-    RDEBUG( "WaitForRequestL", 0 );
-    TInt res = iWait->WaitForRequestL();
-    RDEBUG( "WaitForRequestL res", res );
-#ifdef __WINS__
-    if (res == KErrNotSupported || res == KErrTimedOut)
-        res = KErrGsm0707IncorrectPassword; // KErrGsm0707IncorrectPassword = incorrect code
-#endif
-    RDEBUG( "KErrGsm0707IncorrectPassword", KErrGsm0707IncorrectPassword );
-    if (res == KErrNone)
+    if ( simRemoved )
         {
-        // The message is also valid as a lock-code, this means that
-        // remote lock code matches the security code 
-        // and that is not allowed
-        RDEBUG( "return KErrCancel because msg matches code", KErrCancel );
-        ShowResultNoteL(R_REMOTELOCK_INVALID_CODE, CAknNoteDialog::EErrorTone);
-        return KErrCancel;
-        }
-
-    RDEBUG( "retValue", retValue );
-    return retValue;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::RemoteLockSetLockSettingL()
-// Changes lock setting in domestic OS. Changing the domestic OS lock setting
-// requires user to enter the security code.
-// ----------------------------------------------------------
-// qtdone
-TInt CSecuritySettings::RemoteLockSetLockSettingL(TBool aLockSetting)
-    {
-    TInt retValue(KErrNone);
-    RDEBUG( "aLockSetting", aLockSetting );
-
-    RMobilePhone::TMobilePhoneLockSetting lockSetting = RMobilePhone::ELockSetEnabled;
-    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
-
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-
-    //get lock info
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    RDEBUG("GetLockInfo", 0);
-    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    TInt status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        {
-        lockInfo.iSetting = RMobilePhone::ELockSetDisabled;
-        status = KErrNone;
-        }
-#endif
-    User::LeaveIfError(status);
-    RDEBUG("current lockInfo.iSetting", lockInfo.iSetting);
-
-    // disabled->disabled   should not happen
-    // enabled->enabled     happens because a change of message also forces a code re-validation
-    if (aLockSetting)
-        {
-        lockSetting = RMobilePhone::ELockSetEnabled;
-        }
-    else
-        {
-        lockSetting = RMobilePhone::ELockSetDisabled;
-        }
-    RDEBUG("future lockSetting", lockSetting);
-
-    iWait->SetRequestType(EMobilePhoneSetLockSetting);
-    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-    RDEBUG( "SetLockSetting", 0 );
-    iPhone.SetLockSetting(iWait->iStatus, lockType, lockSetting); // this will PassPhraseRequiredL
-    RDEBUG( "WaitForRequestL", 0 );
-    retValue = iWait->WaitForRequestL();
-    RDEBUG( "WaitForRequestL retValue", retValue );
-#ifdef __WINS__
-    if (retValue == KErrNotSupported || retValue == KErrTimedOut)
-        retValue = KErrNone;
-#endif
-
-    switch (retValue)
-        {
-        case KErrNone:
-            break;
-
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            // Security code was entered erroneously
-            //Error note is shown in CSecurityHandler::PassPhraseRequired()
-            break;
-
-        case KErrAbort:
-            break;
-
-        default:
-            break;
-        }
-
-    RDEBUG( "retValue", retValue );
-    return retValue;
-    }
-
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangeSimSecurityL()
-// Changes SIM security
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::ChangeSimSecurityL()
-    {
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-    RDEBUG("0", 0);
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneToICC;
-    RMobilePhone::TMobilePhoneLockSetting lockChangeSetting;
-
-    //get lock info
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    RDEBUG("GetLockInfo", 0);
-    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    TInt status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        {
-        lockInfo.iSetting = RMobilePhone::ELockSetDisabled;
-        status = KErrNone;
-        }
-#endif
-    User::LeaveIfError(status);
-    TInt currentItem = 0;
-    RDEBUG("lockInfo.iSetting", lockInfo.iSetting);
-    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-        {
-        currentItem = 1; // off
-        }
-
-    if (currentItem == 0) // switch the flag
-        {
-        lockChangeSetting = RMobilePhone::ELockSetDisabled;
-        }
-    else
-        {
-        lockChangeSetting = RMobilePhone::ELockSetEnabled;
-        }
-    RDEBUG("lockChangeSetting", lockChangeSetting);
-
-    iWait->SetRequestType(EMobilePhoneSetLockSetting);
-    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-    RDEBUG("SetLockSetting", 0);
-    iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting); // this invokes the handler
-    RDEBUG("WaitForRequestL", 0);
-    status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        status = KErrNone;
-#endif
-
-    // the error was displayed in the handler
-    RDEBUG("status", status);
-    switch (status)
-        {
-        case KErrNone:
-            {
-            break;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            // code was entered erroneously
-            return ChangeSimSecurityL();
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            return ChangeSimSecurityL();
-            }
-        case KErrAbort:
-            {
-            return EFalse;
-            }
-        default:
-            {
-            ShowErrorNoteL(status);
-            return ChangeSimSecurityL();
-            }
+        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+        return;
         }
 
-    return ETrue;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangePinRequestL()
-// Changes PIN1 request
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::ChangePinRequestL()
-    {
-    RDEBUG("0", 0);
-
-    RMobilePhone::TMobilePassword iOldPassword;
-    TInt iFlags = 0;
-    iOldPassword.Copy(_L(""));
-
-    TBuf<0x80> iCaption;
-    iCaption.Copy(_L("ChangePinRequestL")); // no need to translate. Not used
-    TInt iShowError = 1;
-    TInt err = ChangePinRequestParamsL(1/* it's imposible to know if we want to set or clear*/, iOldPassword, iFlags, iCaption, iShowError);
-    RDEBUG("err", err);
-    if (err == KErrNone)
-        return ETrue;
-    else
-        return EFalse;
-    }
-
-//
-// ----------------------------------------------------------
-// CSecuritySettings::ChangeUPinRequestL()
-// Changes UPIN request on/off
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::ChangeUPinRequestL()
-    {
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    RDEBUG("wcdmaSupported", wcdmaSupported);
-    RDEBUG("upinSupported", upinSupported);
-    if (wcdmaSupported || upinSupported)
-        {
-        TInt simState;
-        TInt err(KErrGeneral);
-        err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-        User::LeaveIfError(err);
-        TBool simRemoved(simState == ESimNotPresent);
-
-        if (simRemoved)
-            {
-            ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-            return EFalse;
-            }
-
-        RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-        RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-        RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockUniversalPin;
-
-        RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockSetDisabled;
-
-        //get lock info
-        iWait->SetRequestType(EMobilePhoneGetLockInfo);
-        RDEBUG("GetLockInfo", 0);
-        iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-        RDEBUG("WaitForRequestL", 0);
-        TInt status = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-        if (status == KErrNotSupported || status == KErrTimedOut)
-            status = KErrNone;
-#endif
-        User::LeaveIfError(status);
-        TInt currentItem = 0;
-
-        RDEBUG("lockInfo.iSetting", lockInfo.iSetting);
-        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-            {
-            currentItem = 1; // off
-            }
-
-        if (currentItem == 0) // switch the flag
-            {
-            lockChangeSetting = RMobilePhone::ELockSetDisabled;
-            }
-        else
-            {
-            lockChangeSetting = RMobilePhone::ELockSetEnabled;
-            }
-        RDEBUG("lockChangeSetting", lockChangeSetting);
-        // Raise a flag to indicate that the UPIN
-        // request coming from ETEL has originated from SecUi and not from Engine.
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
-        // Change the lock setting
-        iWait->SetRequestType(EMobilePhoneSetLockSetting);
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-        RDEBUG("SetLockSetting", 0);
-        iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting); // this calls something in the handler
-        RDEBUG("WaitForRequestL", 0);
-        status = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL status", status);
-        // Lower the flag                           
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginatedUninitialized);
-#ifdef __WINS__
-        if (status == KErrNotSupported || status == KErrTimedOut)
-            status = KErrNone;
-#endif
-
-        // no need to show errors because they were displayed in the Handler
-        switch (status)
-            {
-            case KErrNone:
-                {
-                break;
-                }
-            case KErrGsm0707OperationNotAllowed:
-                {
-                // not allowed with this sim
-                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                return EFalse;
-                }
-            case KErrGsm0707IncorrectPassword:
-            case KErrAccessDenied:
-                {
-                // code was entered erroneously
-                return ChangeUPinRequestL();
-                }
-            case KErrGsmSSPasswordAttemptsViolation:
-            case KErrLocked:
-                {
-                return EFalse;
-                }
-            case KErrAbort:
-                {
-                return EFalse;
-                }
-            default:
-                {
-                ShowErrorNoteL(status);
-                return ChangeUPinRequestL();
-                }
-            }
-
-        return ETrue;
-        }
-    else
-        return EFalse;
-
-    }
-
-//
-// ----------------------------------------------------------
-// CSecuritySettings::SwitchPinCodesL()
-// Changes the pin code currently in use (PIN/UPIN)
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::SwitchPinCodesL()
-    {
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    RDEBUG("wcdmaSupported", wcdmaSupported);
-    RDEBUG("upinSupported", upinSupported);
-    if (wcdmaSupported || upinSupported)
-        {
-        // If we are in simless offline mode the PIN codes can't obviously be switched
-        TInt simState;
-        TInt err(KErrGeneral);
-        err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-        User::LeaveIfError(err);
-        TBool simRemoved(simState == ESimNotPresent);
-
-        if (simRemoved)
-            {
-            ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-            return EFalse;
-            }
-
-        RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockUniversalPin;
-        RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockReplaced;
-        RMobilePhone::TMobilePhoneSecurityCode activeCode;
-
-        iCustomPhone.GetActivePin(activeCode);
-
-        RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-        RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-        RDEBUG("EMobilePhoneGetLockInfo", EMobilePhoneGetLockInfo);
-        iWait->SetRequestType(EMobilePhoneGetLockInfo);
-
-        if (activeCode == RMobilePhone::ESecurityUniversalPin)
-            {
-            lockType = RMobilePhone::ELockUniversalPin;
-            iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-            RDEBUG("WaitForRequestL", 0);
-            TInt res = iWait->WaitForRequestL();
-            RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-            if (res == KErrNotSupported || res == KErrTimedOut)
-                res = KErrNone;
-#endif
-            User::LeaveIfError(res);
-            }
-        else
-            {
-            lockType = RMobilePhone::ELockICC;
-            iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-            RDEBUG("WaitForRequestL", 0);
-            TInt res = iWait->WaitForRequestL();
-            RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-            if (res == KErrNotSupported || res == KErrTimedOut)
-                res = KErrNone;
-#endif
-            User::LeaveIfError(res);
-            }
-
-        // code request must be ON to change active code.
-        RDEBUG("lockInfo.iSetting", lockInfo.iSetting);
-        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-            {
-
-            if (activeCode != RMobilePhone::ESecurityUniversalPin)
-                {
-                ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                }
-            else
-                {
-                ShowResultNoteL(R_PIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                }
-            return EFalse;
-            }
-
-        iCustomPhone.GetActivePin(activeCode);
-        TInt currentItem = 0;
-
-        RDEBUG("activeCode", activeCode);
-        if (activeCode == RMobilePhone::ESecurityUniversalPin)
-            {
-            currentItem = 1; // UPIN
-            }
-        if (currentItem == 0) // switch the flag
-            {
-            lockType = RMobilePhone::ELockUniversalPin;
-            }
-        else
-            {
-            lockType = RMobilePhone::ELockICC;
-            }
-        RDEBUG("lockType", lockType);
-
-        // Raise a flag to indicate that the code
-        // request coming from ETEL has originated from SecUi and not from Engine.
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
-        // Change the lock setting
-        iWait->SetRequestType(EMobilePhoneSetLockSetting);
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-        RDEBUG("SetLockSetting", 0);
-        iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting); // request from handler
-        RDEBUG("WaitForRequestL", 0);
-        TInt status = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL status", status);
-        // Lower the flag                            
-        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginatedUninitialized);
-#ifdef __WINS__
-        if (status == KErrNotSupported || status == KErrTimedOut)
-            status = KErrNone;
-#endif
-
-        // errors are shown in the handler
-        switch (status)
-            {
-            case KErrNone:
-                {
-                break;
-                }
-            case KErrGsm0707OperationNotAllowed:
-                {
-                // not allowed with this sim
-                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                return EFalse;
-                }
-            case KErrGsm0707IncorrectPassword:
-            case KErrAccessDenied:
-                {
-                // code was entered erroneously
-                return SwitchPinCodesL();
-                }
-            case KErrGsmSSPasswordAttemptsViolation:
-            case KErrLocked:
-                {
-                return EFalse;
-                }
-            case KErrAbort:
-                {
-                return EFalse;
-                }
-            default:
-                {
-                ShowErrorNoteL(status);
-                return SwitchPinCodesL();
-                }
-            }
-
-        return ETrue;
-        }
-    else
-        return EFalse;
-    }
-
-//
-// ----------------------------------------------------------
-// CSecuritySettings::IsLockEnabledL()
-// Return is lock enabled/disabled
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::IsLockEnabledL(RMobilePhone::TMobilePhoneLock aLockType)
-    {
-    TBool ret = EFalse;
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-    //get lock info
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    RDEBUG("GetLockInfo", 0);
-    iPhone.GetLockInfo(iWait->iStatus, aLockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    TInt res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-
-    if (res != KErrNone)
-        ret = ETrue;
-    //lock is enabled return true
-    else if (lockInfo.iSetting == RMobilePhone::ELockSetEnabled)
-        {
-        ret = ETrue;
-        }
-    RDEBUG("ret", ret);
-    return ret;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::AskSecCodeL()
-// For asking security code e.g in settings
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::AskSecCodeL()
-    {
-    return iSecurityHandler->AskSecCodeL();
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::AskPin2L()
-// Asks PIN2
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::AskPin2L()
-    {
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-    RDEBUG("0", 0);
-    TInt retPhone = 0;
-    // check if pin2 is blocked...
-    RMmCustomAPI::TSecurityCodeType secCodeType = RMmCustomAPI::ESecurityCodePin2;
-    RMobilePhone::TMobilePhoneSecurityCode etelsecCodeType(RMobilePhone::ESecurityCodePin2);
+    RMmCustomAPI::TSecurityCodeType secCodeType;
+    RMobilePhone::TMobilePhoneSecurityCode EtelsecCodeType;
+    secCodeType = RMmCustomAPI::ESecurityCodePin2;
+    RMobilePhone::TMobilePassword oldPassword;
+    RMobilePhone::TMobilePassword newPassword;
+    RMobilePhone::TMobilePassword verifcationPassword;
+    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
     RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
     RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-    RMobilePhone::TMobilePassword password;
+    
+    // check if pin2 is blocked...
     TBool isBlocked = EFalse;
-    TInt queryAccepted = KErrCancel;
-    //Check whether PIN2 is blocked
-    retPhone = iCustomPhone.IsBlocked(secCodeType, isBlocked);
-
-    RDEBUG("retPhone", retPhone);
-    RDEBUG("isBlocked", isBlocked);
-#ifdef __WINS__
-    if (retPhone == KErrNotSupported || retPhone == KErrTimedOut)
-        retPhone = KErrNone;
-#endif
-    if (isBlocked)
-        return EFalse;
-
-    if (retPhone != KErrNone)
-        {
-        switch (retPhone)
-            {
-            // PIN2 Blocked.
-            case KErrGsm0707SIMPuk2Required:
-                break;
-            case KErrGsmSSPasswordAttemptsViolation:
-            case KErrLocked:
-                // Pin2 features blocked permanently!
-                ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
-                break;
-            case KErrGsm0707SimNotInserted:
-                // not allowed with this sim
-                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                break;
-            default:
-                ShowErrorNoteL(retPhone);
-                break;
-            }
-        return EFalse;
-        }
-    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
-    RDEBUG("GetSecurityCodeInfo", 0);
-    iPhone.GetSecurityCodeInfo(iWait->iStatus, etelsecCodeType, codeInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    retPhone = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL retPhone", retPhone);
-#ifdef __WINS__
-    if (retPhone == KErrNotSupported || retPhone == KErrTimedOut)
-        {
-        retPhone = KErrNone;
-        codeInfo.iRemainingEntryAttempts = 3;
-        }
-#endif
-    User::LeaveIfError(retPhone);
-
-    RDEBUG("codeInfo.iRemainingEntryAttempts",
-            codeInfo.iRemainingEntryAttempts);
-    if (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
-        codeInfo.iRemainingEntryAttempts = -1;
 
-    // ask pin2 code  
-    /* request PIN using QT */
-    queryAccepted = KErrCancel;
-    CSecQueryUi *iSecQueryUi;
-    iSecQueryUi = CSecQueryUi::NewL();
-    TBuf<0x100> title;
-    title.Zero();
-    HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_pin2_code"));
-    title.Append(stringHolder->Des());
-    CleanupStack::PopAndDestroy(stringHolder);
-    title.Append(_L("$"));
-    title.AppendNum(codeInfo.iRemainingEntryAttempts);
-    queryAccepted = iSecQueryUi->SecQueryDialog(title, password, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-            | ESecUiEmergencyNotSupported | secCodeType);
-    RDEBUG("password", 0);
-    RDEBUGSTR(password);
-    RDEBUG("queryAccepted", queryAccepted);
-    delete iSecQueryUi;
-    if (queryAccepted != KErrNone)
-        return EFalse;
-
-    // verify code
-    RMobilePhone::TMobilePassword required_fourth;
-    iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
-    RDEBUG("VerifySecurityCode", 0);
-    iPhone.VerifySecurityCode(iWait->iStatus, etelsecCodeType, password, required_fourth);
-    RDEBUG("WaitForRequestL", 0);
-    retPhone = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL retPhone", retPhone);
-#ifdef __WINS__
-    if (retPhone == KErrNotSupported)
-        retPhone = KErrNone;
-#endif
-
-    switch (retPhone)
-        {
-        case KErrNone:
-            break;
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            // code was entered erroneously
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            return AskPin2L();
-        case KErrGsm0707OperationNotAllowed:
-            // not allowed with this sim
-            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-            return EFalse;
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            // code was blocked
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            return EFalse;
-        default:
-            ShowErrorNoteL(retPhone);
-            return AskPin2L();
-        }
-
-    return ETrue;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::SetFdnModeL()
-// Activates or deactivates Fixed Dialling Numbers (FDN) mode.  
-// ----------------------------------------------------------
-// not qtdone
-EXPORT_C void CSecuritySettings::SetFdnModeL()
-    {
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-    RDEBUG("0", 0);
-    RMmCustomAPI::TSecurityCodeType secCodeType = RMmCustomAPI::ESecurityCodePin2;
-
-    TBool isBlocked = EFalse;
-    TInt ret = iCustomPhone.IsBlocked(secCodeType, isBlocked);
-    RDEBUG("isBlocked", isBlocked);
-    RDEBUG("ret", ret);
-    if (isBlocked)
+    TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+    
+    if(isBlocked)
         return;
-
+    
     if (ret != KErrNone)
-        {
+        {    
         switch (ret)
             {
             // PIN2 Blocked.
@@ -1126,39 +603,1785 @@
             }
         return;
         }
+    
+    CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(verdlg);
 
+    CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);    
+    CleanupStack::PushL(newdlg);
+
+    CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);      
+    CleanupStack::PushL(dlg);
+
+
+    // Security code must be changed to Etel API format
+    // Custom API Pin1 and Pin2 have the same enum values as the Etel ones
+    EtelsecCodeType = (RMobilePhone::TMobilePhoneSecurityCode)secCodeType;
+    #ifndef __WINS__    
+        iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+        iPhone.GetSecurityCodeInfo(iWait->iStatus, EtelsecCodeType, codeInfoPkg);
+        ret = iWait->WaitForRequestL();
+        User::LeaveIfError(ret);
+    #else
+        codeInfo.iRemainingEntryAttempts = 1;
+    #endif //__WINS__
+
+    if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
+            ret = dlg->ExecuteLD(R_PIN2_QUERY);
+    else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
+       {
+         HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN2_ATTEMPTS, codeInfo.iRemainingEntryAttempts );
+         ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
+         CleanupStack::PopAndDestroy(queryPrompt);
+       }
+    else
+       {
+         HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN2_ATTEMPT);
+         ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
+         CleanupStack::PopAndDestroy(queryPrompt);   
+       }
+
+    CleanupStack::Pop(); // dlg
+    if(!ret)
+        {
+        CleanupStack::PopAndDestroy(2,verdlg);
+        return;
+        }
+
+    // new pin code query
+    CleanupStack::Pop(); // newdlg
+    if(!(newdlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY)))
+        {
+        CleanupStack::PopAndDestroy(verdlg);
+        return;
+        }
+
+     // verification code query
+    CleanupStack::Pop(); // verdlg
+    if(!(verdlg->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY)))
+        {
+        return;
+        }
+
+    while (newPassword.CompareF(verifcationPassword) != 0)     
+        {
+        // codes do not match -> note -> ask new pin and verification codes again  
+        ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
+
+        newPassword = _L("");
+        verifcationPassword = _L("");
+        
+        // new pin code query
+        CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
+        if(!(dlg->ExecuteLD(R_NEW_PIN2_CODE_QUERY)))
+            return;
+              
+        // verification code query
+        CCodeQueryDialog* dlg2 = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_PIN2_CODE_MIN_LENGTH,SEC_C_PIN2_CODE_MAX_LENGTH,ESecUiNone);
+          if(!(dlg2->ExecuteLD(R_VERIFY_NEW_PIN2_CODE_QUERY)))
+            return;
+        }        
+    
+
+    passwords.iOldPassword = oldPassword;
+    passwords.iNewPassword = newPassword;
+    iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+    iPhone.ChangeSecurityCode(iWait->iStatus,EtelsecCodeType,passwords);
+    TInt res = iWait->WaitForRequestL();
+        #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePin2L(): RETURN CODE: %d"), res);
+    #endif
+    switch(res)
+        {
+        case KErrNone:
+            {
+            // code changed 
+            ShowResultNoteL(R_PIN2_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+            break;
+            }        
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            {    
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            ChangePin2L();
+            break;
+            }    
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            {
+            // Pin2 blocked!
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            CSecurityHandler* handler = new(ELeave) CSecurityHandler(iPhone);
+            CleanupStack::PushL(handler); 
+            handler->HandleEventL(RMobilePhone::EPuk2Required);
+            CleanupStack::PopAndDestroy(handler); // handler    
+            return;
+            }
+        case KErrGsm0707OperationNotAllowed:
+            {
+            // not allowed with this sim
+            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+            return;
+            }
+        case KErrAbort:
+            {
+            break;
+            }
+        default:
+            {
+            ShowErrorNoteL(res);
+            ChangePin2L();
+            break;
+            }
+        }
+     }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangeSecCodeL()
+// Changes security code 
+// ----------------------------------------------------------
+//
+EXPORT_C void CSecuritySettings::ChangeSecCodeL()
+    {  
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeSecCodeL()"));
+    #endif
+    TInt res;
+    RMobilePhone::TMobilePassword newPassword;
+if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ) &&
+		(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements  )))   
+{ 
+    
+    // Connect to the SCP server, and request the code change
+    RSCPClient scpClient;
+    User::LeaveIfError( scpClient.Connect() );
+    CleanupClosePushL( scpClient );
+    res = scpClient.ChangeCodeRequest();
+    CleanupStack::PopAndDestroy(); // scpClient
+    
+}
+else
+{
+         
+    RMobilePhone::TMobilePhoneSecurityCode secCodeType;
+    secCodeType = RMobilePhone::ESecurityCodePhonePassword;
+    RMobilePhone::TMobilePassword oldPassword;
+    RMobilePhone::TMobilePassword verifcationPassword;
+    RMobilePhone::TMobilePassword required_fourth;
+    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+
+    CCodeQueryDialog* verdlg = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_CHANGE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(verdlg);
+
+    CCodeQueryDialog* newdlg = new (ELeave) CCodeQueryDialog(newPassword,SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_CHANGE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(newdlg);
+
+    CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (oldPassword,SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_MAX_LENGTH,ESecUiNone);
+    CleanupStack::PushL(dlg);
+
+    // ask security code
+    CleanupStack::Pop(); // dlg
+    if (!(dlg->ExecuteLD(R_SECURITY_QUERY)))
+        {
+        CleanupStack::PopAndDestroy(2,verdlg);
+        return;
+        }
+    // new security code query
+    CleanupStack::Pop(); // newdlg
+    if(!(newdlg->ExecuteLD(R_NEW_SECURITY_CODE_QUERY)))
+        {    
+        CleanupStack::PopAndDestroy(verdlg);
+        return;
+        }
+     
+    // verification code query
+    CleanupStack::Pop(); // verdlg
+      if(!(verdlg->ExecuteLD(R_VERIFY_NEW_SECURITY_CODE_QUERY)))
+        {
+        return;
+        }
+
+    while (newPassword.CompareF(verifcationPassword) != 0)         
+        {            
+        // codes do not match -> note -> ask new pin and verification codes again  
+        ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
+        
+        newPassword = _L("");
+        verifcationPassword = _L("");
+
+        // new pin code query
+        CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (newPassword,SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_CHANGE_MAX_LENGTH,ESecUiNone);
+        if(!(dlg->ExecuteLD(R_NEW_SECURITY_CODE_QUERY)))
+            return;
+          
+        // verification code query
+        CCodeQueryDialog* dlg2 = new (ELeave) CCodeQueryDialog (verifcationPassword,SEC_C_SECURITY_CODE_MIN_LENGTH,SEC_C_SECURITY_CODE_CHANGE_MAX_LENGTH,ESecUiNone);
+          if(!(dlg2->ExecuteLD(R_VERIFY_NEW_SECURITY_CODE_QUERY)))
+            return;    
+        }            
+    iWait->SetRequestType(EMobilePhoneVerifySecurityCode);    
+    // check code
+    iPhone.VerifySecurityCode(iWait->iStatus,secCodeType, oldPassword, required_fourth);
+    res = iWait->WaitForRequestL();
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeSecCode(): CODE VERIFY RESP: %d"), res);
+    #endif
+    // change code 
+    if (res == KErrNone)
+        {
+        passwords.iOldPassword = oldPassword;
+        passwords.iNewPassword = newPassword;
+        iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
+        iPhone.ChangeSecurityCode(iWait->iStatus,secCodeType,passwords);
+        res = iWait->WaitForRequestL();
+        }
+        
+}
+        
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeSecCode(): RETURN CODE: %d"), res);
+    #endif
+    switch(res)
+        {
+        case KErrNone:
+            {
+            // code changed 
+            ShowResultNoteL(R_SECURITY_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
+            if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ) &&
+								!(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements  )))
+						{
+            // Send the changed code to the SCP server. Not used with device lock enhancements.
+            
+            RSCPClient scpClient;
+            TSCPSecCode newCode;
+            newCode.Copy( newPassword );
+            if ( scpClient.Connect() == KErrNone )
+                {
+                scpClient.StoreCode( newCode );
+                scpClient.Close();
+                }                                               
+          }
+                        
+            break;
+            }
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            {
+            ShowResultNoteL(R_SEC_BLOCKED, CAknNoteDialog::EErrorTone);
+            ChangeSecCodeL();
+            break;
+            }
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            {    
+            // code was entered erroneously
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            ChangeSecCodeL();
+            break;
+            }
+        case KErrAbort:
+            {
+            break;
+            }
+        default:
+            {
+            ShowErrorNoteL(res);
+            ChangeSecCodeL();
+            break;
+            }
+        }
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangeAutoLockPeriodL()
+// Changes autolock period
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CSecuritySettings::ChangeAutoLockPeriodL(TInt aPeriod)
+    {            
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodLXXXX()"));
+    #endif
+    RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
+    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
+    TInt currentItem = 0;
+    TInt oldPeriod = aPeriod;
+
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() ReadDesC16ArrayResourceL"));
+    #endif
+
+
+    CCoeEnv* coeEnv = CCoeEnv::Static();        
+    CDesCArrayFlat* items =  coeEnv->ReadDesC16ArrayResourceL(R_AUTOLOCK_LBX);
+    CleanupStack::PushL(items);
+        
+    if (aPeriod == 0)
+        {
+        currentItem = 0;  // autolock off
+        }
+    else
+        {
+        currentItem = 1;  // user defined
+        }
+    
+
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() New autolocksettingpage"));
+    #endif
+    
+    CAutoLockSettingPage* dlg = new (ELeave)CAutoLockSettingPage(R_AUTOLOCK_SETTING_PAGE, currentItem, items, aPeriod);
+    CleanupStack::PushL(dlg);
+    dlg->ConstructL();
+    TInt maxPeriod;
+    if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw ))
+		{
+    // Retrieve the current autolock period max. value from the SCP server, 
+    // and check that the value the user
+    // selected is ok from the Corporate Policy point of view.
+	RSCPClient scpClient;
+    TInt ret = scpClient.Connect();
+    if ( ret == KErrNone )
+        {       
+        CleanupClosePushL( scpClient );
+        TBuf<KSCPMaxIntLength> maxPeriodBuf;
+        if ( scpClient.GetParamValue( ESCPMaxAutolockPeriod, maxPeriodBuf ) == KErrNone )
+            {
+            TLex lex( maxPeriodBuf );          
+            if ( ( lex.Val( maxPeriod ) == KErrNone ) && ( maxPeriod > 0 ) )
+                {               
+                 dlg->SetPeriodMaximumValue(maxPeriod);
+                }
+            else
+                {
+                   maxPeriod = 0;
+                   dlg->SetPeriodMaximumValue(maxPeriod);     
+                }
+                
+            }
+        else
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL():\
+                ERROR: Failed to retrieve max period"));
+            #endif            
+            }            
+        }
+    else
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL():\
+            ERROR: Failed to connect to SCP."));
+        #endif            
+        }
+    CleanupStack::PopAndDestroy(); // scpClient 
+}
+    CleanupStack::Pop(); //dlg
+    if (!dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
+        {
+        CleanupStack::PopAndDestroy(items);           
+        return oldPeriod;
+        }
+    
+    CleanupStack::PopAndDestroy();    // items
+    
+    if ( FeatureManager::FeatureSupported( KFeatureIdSapTerminalControlFw ) )
+        {
+		// define a flag indicating whether disable autolock is allowed.
+        TBool allowDisableAL = ETrue;
+        
+        if ( ( aPeriod == 0 ) && ( maxPeriod > 0 ) )
+            {
+            #if defined( _DEBUG )
+                RDebug::Print(
+                    _L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() \
+                    The period: %d is not allowed by TARM; max: %d" ),
+                    aPeriod, maxPeriod );
+            #endif                
+            allowDisableAL = EFalse;
+            HBufC* prompt = NULL;
+            prompt = StringLoader::LoadLC(
+                    R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE );
+            CAknNoteDialog* noteDlg = new ( ELeave ) CAknNoteDialog(
+                    REINTERPRET_CAST( CEikDialog**,&noteDlg ) );
+            noteDlg->PrepareLC( R_CODE_ERROR );
+            noteDlg->SetTextL( *prompt );
+            noteDlg->SetTimeout( CAknNoteDialog::ELongTimeout );
+            noteDlg->SetTone( CAknNoteDialog::EErrorTone );
+            noteDlg->RunLD();
+            CleanupStack::PopAndDestroy( prompt );
+            }
+        
+        if ( !allowDisableAL )
+            {
+            return ChangeAutoLockPeriodL( oldPeriod );
+            }
+        }
+
+    if (aPeriod == 0)
+        {
+        
+        #ifdef RD_REMOTELOCK
+
+        // If remote lock is enabled, don't disable the domestic OS device lock
+        // since that would render the RemoteLock useless.
+        // Instead just re-set the DOS lock to enabled which as a side effect
+        // requests the security code from the user.
+
+        TBool remoteLockStatus( EFalse );
+        CRemoteLockSettings* remoteLockSettings = CRemoteLockSettings::NewL();
+
+        if ( remoteLockSettings->GetEnabled( remoteLockStatus ) )
+            {
+            if ( remoteLockStatus )
+                {
+                // Remote lock is enabled
+                #ifdef _DEBUG
+                RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - RemoteLock is enabled: lockChange = RMobilePhone::ELockSetEnabled" ) );
+                #endif // _DEBUG
+
+                lockChange = RMobilePhone::ELockSetEnabled;
+                }
+            else
+                {
+                // Remote lock is disabled
+                #ifdef _DEBUG
+                RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - RemoteLock is disabled: lockChange = RMobilePhone::ELockSetDisabled" ) );
+                #endif // _DEBUG
+
+                lockChange = RMobilePhone::ELockSetDisabled;
+                }
+            }
+        else
+            {
+            // Failed to get remote lock status
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeAutoLockPeriodL() - Failed to get RemoteLock status" ) );
+            #endif // _DEBUG
+            }
+
+        delete remoteLockSettings;
+        remoteLockSettings = NULL;
+
+        #else // not defined RD_REMOTELOCK
+
+        lockChange = RMobilePhone::ELockSetDisabled;
+
+        #endif // RD_REMOTELOCK
+        }
+    else
+        {
+        lockChange = RMobilePhone::ELockSetEnabled;
+        }
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() SetLockSetting"));
+    #endif
+        iWait->SetRequestType(EMobilePhoneSetLockSetting);
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+        iPhone.SetLockSetting(iWait->iStatus,lockType,lockChange);
+        TInt status = iWait->WaitForRequestL();
+        #if defined(_DEBUG)
+        RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL(): RETURN CODE: %d"), status);
+        #endif
+        switch(status)
+        {
+        case KErrNone:
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() KErrNone"));
+            #endif
+            break;
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() PasswordAttemptsViolation"));
+            #endif
+            return ChangeAutoLockPeriodL(oldPeriod);
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() IncorrectPassword"));
+            #endif
+            // code was entered erroneously
+            return ChangeAutoLockPeriodL(oldPeriod);
+        case KErrAbort:
+            // User pressed "cancel" in the code query dialog.
+            return oldPeriod;
+        default:
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() default"));
+            #endif            
+            return ChangeAutoLockPeriodL(oldPeriod);
+        }
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeAutoLockPeriodL() END"));
+    #endif
+    return aPeriod; 
+    }
+
+
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangeRemoteLockStatusL()
+// Changes remote lock status (on/off)
+// ----------------------------------------------------------
+//
+EXPORT_C TInt CSecuritySettings::ChangeRemoteLockStatusL( TBool& aRemoteLockStatus, TDes& aRemoteLockCode, TInt aAutoLockPeriod )
+    {
+   #ifdef RD_REMOTELOCK
+    TInt retValue( KErrNone );
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - Enter, aRemoteLockStatus == %d, aAutoLockPeriod == %d" ), aRemoteLockStatus, aAutoLockPeriod );
+    #endif // _DEBUG
+
+    CCoeEnv* coeEnv       = CCoeEnv::Static();        
+    CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL( R_REMOTELOCK_LBX );
+    CleanupStack::PushL( items );
+
+    // Store the current remote lock setting 
+    TInt previousItem( 0 );
+    TInt currentItem(  0 );
+
+    if ( aRemoteLockStatus )
+        {
+        previousItem = KRemoteLockSettingItemOn;
+        currentItem  = KRemoteLockSettingItemOn;
+        }
+    else
+        {
+        previousItem = KRemoteLockSettingItemOff;
+        currentItem  = KRemoteLockSettingItemOff;
+        }
+
+    // Create Remote Lock setting page for user to enable or disable remote locking 
+    CRemoteLockSettingPage* remoteLockSettingPage = new( ELeave ) CRemoteLockSettingPage( R_REMOTELOCK_SETTING_PAGE, currentItem, items );
+
+    #ifdef _DEBUG
+    RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - Executing CRemoteLockSettingPage dialog" ) );
+    #endif // _DEBUG
+
+    // Execute the remote lock enable/disable dialog
+    TBool ret = remoteLockSettingPage->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
+
+    // Setting page list box items (texts) no longer needed
+    CleanupStack::PopAndDestroy( items );
+
+    if ( ret )
+        {
+        if ( currentItem == KRemoteLockSettingItemOn )
+            {
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - Remote lock status set to ON" ) );
+            #endif // _DEBUG
+
+            aRemoteLockStatus = ETrue;
+
+            // If user wishes to enable remote lock
+            // a new remote lock code is required.
+            // RemoteLockCodeQueryL also 
+            retValue = RemoteLockCodeQueryL( aRemoteLockCode );
+            }
+        else if ( currentItem == KRemoteLockSettingItemOff )
+            {
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - Remote lock status set to OFF" ) );
+            #endif // _DEBUG
+
+            aRemoteLockStatus = EFalse;
+            retValue          = KErrNone;
+
+            // Check whether the status was already off
+            // If not don't make the user enter the security code
+            // (which occurs when setting the DOS lock setting) for no reason.
+            if ( currentItem != previousItem )
+                {
+                // Check whether AutoLock is enabled (timeout value greater 
+                // than zero) or not. If AutoLock is enabled the domestic OS 
+                // device lock should be left enabled.
+                if ( aAutoLockPeriod == 0 )
+                    {
+                    // Disable lock setting from domestic OS
+                    retValue = RemoteLockSetLockSettingL( EFalse );
+                    }
+                else
+                    {
+                    // If AutoLock is enabled, don't disable the DOS device lock
+                    // Re-set (enable) the domestic OS device lock because as a 
+                    // side effect it requires the security code from the user
+                    retValue = RemoteLockSetLockSettingL( ETrue );
+                    }
+                }
+            }
+        else
+            {
+            // This should never happen. But if it does don't change anything
+            retValue = KErrUnknown;
+            }
+        }
+    else
+        {
+        // Something went wrong with the RemoteLockSettingPage dialog 
+        retValue = KErrGeneral;
+
+        #ifdef _DEBUG
+        RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - CRemoteLockSettingPage::ExecuteLD() failed" ) );
+        #endif // _DEBUG
+        }
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockStatusL() - Exit" ) );
+    #endif
+
+    return retValue;
+    #else //! RD_REMOTELOCK
+    return KErrNotSupported;
+    #endif //RD_REMOTELOCK
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::RemoteLockCodeQueryL()
+// Pops up remote lock code query. Requires user to enter a new remote lock 
+// code twice and if they match enables the domestic OS device lock (which as 
+// a side effect pops up security code query).
+// ----------------------------------------------------------
+//
+TInt CSecuritySettings::RemoteLockCodeQueryL( TDes& aRemoteLockCode )
+    {
+    #ifdef RD_REMOTELOCK
+    TInt retValue( KErrNone );
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Enter" ) );
+    #endif // _DEBUG
+
+    // Clear the remote lock code buffer
+    aRemoteLockCode.Zero();
+
+    // ----- Remote lock code query -------------------------------------------
+
+    // Execute Remote Lock code query
+    #ifdef _DEBUG
+    RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Executing remote lock code query" ) );
+    #endif // _DEBUG
+
+    // Load the query prompt from resources
+    CCodeQueryDialog* codeQuery = new( ELeave ) CCodeQueryDialog( aRemoteLockCode, SEC_REMOTELOCK_CODE_MIN_LENGTH,SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+    TInt buttonId = codeQuery->ExecuteLD( R_REMOTELOCK_CODE_QUERY );
+    if ( buttonId == EEikBidOk )
+        {
+            // Ok was pressed and the remote lock code seems fine
+            retValue = KErrNone;
+        }
+    else
+        {
+        // User pressed Cancel
+        // Set the code length to zero leaving no trash for possible retry
+        aRemoteLockCode.Zero();
+        retValue = KErrAbort;
+        }
+
+    if ( retValue != KErrNone )
+        {
+        #ifdef _DEBUG
+        RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Exit, Remote lock code error" ) );
+        #endif // _DEBUG
+
+        // Can't continue beyond this 
+        return retValue;
+        }
+
+    // ----- Remote lock code confirm query -----------------------------------
+
+    // Confirm the code by asking it again
+    #ifdef _DEBUG
+    RDebug::Print( _L( "(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Executing remote lock code verify query" ) );
+    #endif // _DEBUG
+
+    // Buffer for the confirmation code
+    TBuf<KRLockMaxLockCodeLength> confirmCode;
+
+    // Load the confirmation query prompt from resources
+    CCodeQueryDialog* codeConfirmQuery = new( ELeave ) CCodeQueryDialog( confirmCode, SEC_REMOTELOCK_CODE_MIN_LENGTH, SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+    buttonId = codeConfirmQuery->ExecuteLD( R_VERIFY_REMOTELOCK_CODE_QUERY);
+
+
+   if ( buttonId == EEikBidOk )
+        {
+        // Compare codes. Compare returns zero if descriptors have
+        // the same length and the same content
+        while ( (aRemoteLockCode.CompareF( confirmCode ) != 0) && (buttonId == EEikBidOk))
+            {
+                //Codes didn't match; zero the bufffers and show the dialog again
+                aRemoteLockCode.Zero();
+                confirmCode.Zero();
+                // Codes don't match. Notify user
+                ShowResultNoteL( R_REMOTELOCK_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone );
+                codeQuery = new( ELeave ) CCodeQueryDialog( aRemoteLockCode, SEC_REMOTELOCK_CODE_MIN_LENGTH,SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                buttonId = codeQuery->ExecuteLD( R_REMOTELOCK_CODE_QUERY );
+                //Unless user pressed Cancel show the verification query
+                if(buttonId == EEikBidOk)
+                    {
+                        codeConfirmQuery = new( ELeave ) CCodeQueryDialog( confirmCode, SEC_REMOTELOCK_CODE_MIN_LENGTH, SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                        buttonId = codeConfirmQuery->ExecuteLD( R_VERIFY_REMOTELOCK_CODE_QUERY);
+                    }
+                
+            } 
+        //User pressed cancel        
+        if(buttonId != EEikBidOk)
+            {
+              // Set the code length to zero leaving no trash for possible retry
+              // Report error and let the user try again 
+              aRemoteLockCode.Zero();
+              confirmCode.Zero();
+              retValue = KErrAbort; 
+            }
+        else
+            {
+            // Codes match
+            confirmCode.Zero();
+
+            // ----- Check against security code ------------------------------
+            
+            // Check that the new remote lock code doesn't match the security 
+            // code of the device.
+
+            RMobilePhone::TMobilePhoneSecurityCode secCodeType;
+            secCodeType = RMobilePhone::ESecurityCodePhonePassword;
+            RMobilePhone::TMobilePassword securityCode;
+            RMobilePhone::TMobilePassword unblockCode;  // Required here only as a dummy parameter 
+
+            if ( aRemoteLockCode.Length() <= RMobilePhone::KMaxMobilePasswordSize )
+                {
+                securityCode = aRemoteLockCode;
+                iWait->SetRequestType( EMobilePhoneVerifySecurityCode );
+                iPhone.VerifySecurityCode( iWait->iStatus, secCodeType, securityCode, unblockCode );
+                TInt res = iWait->WaitForRequestL();
+                // The remote lock code matches the security code 
+                // and that is not allowed
+                while ( (res == KErrNone) && (buttonId == EEikBidOk))
+                    {
+                    #ifdef _DEBUG
+                    RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Unacceptable remote lock code" ) );
+                    #endif // _DEBUG
+                    aRemoteLockCode.Zero();
+                    confirmCode.Zero();
+                    
+					ShowResultNoteL( R_REMOTELOCK_INVALID_CODE, CAknNoteDialog::EErrorTone );
+					
+					codeQuery = new( ELeave ) CCodeQueryDialog( aRemoteLockCode, SEC_REMOTELOCK_CODE_MIN_LENGTH,SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                    buttonId = codeQuery->ExecuteLD( R_REMOTELOCK_CODE_QUERY );
+                    //Unless user pressed Cancel show the verification query
+                    if(buttonId == EEikBidOk)
+                        {
+                            codeConfirmQuery = new( ELeave ) CCodeQueryDialog( confirmCode, SEC_REMOTELOCK_CODE_MIN_LENGTH, SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                            buttonId = codeConfirmQuery->ExecuteLD( R_VERIFY_REMOTELOCK_CODE_QUERY);
+                            
+                            // Compare codes. Compare returns zero if descriptors have
+                            // the same length and the same content
+                            while ( (aRemoteLockCode.CompareF( confirmCode ) != 0) && (buttonId == EEikBidOk))
+                                {
+                                    //Codes didn't match; zero the bufffers and show the dialog again
+                                    aRemoteLockCode.Zero();
+                                    confirmCode.Zero();
+                                    // Codes don't match. Notify user
+                                    ShowResultNoteL( R_REMOTELOCK_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone );
+                                    codeQuery = new( ELeave ) CCodeQueryDialog( aRemoteLockCode, SEC_REMOTELOCK_CODE_MIN_LENGTH,SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                                    buttonId = codeQuery->ExecuteLD( R_REMOTELOCK_CODE_QUERY );
+                                    //Unless user pressed Cancel show the verification query
+                                    if(buttonId == EEikBidOk)
+                                        {
+                                            codeConfirmQuery = new( ELeave ) CCodeQueryDialog( confirmCode, SEC_REMOTELOCK_CODE_MIN_LENGTH, SEC_REMOTELOCK_CODE_MAX_LENGTH, ESecUiNone, ETrue );
+                                            buttonId = codeConfirmQuery->ExecuteLD( R_VERIFY_REMOTELOCK_CODE_QUERY);
+                                        }
+                
+                                } 
+                            //User pressed cancel        
+                            if(buttonId != EEikBidOk)
+                                {
+                                  // Set the code length to zero leaving no trash for possible retry
+                                  // Report error and let the user try again 
+                                  aRemoteLockCode.Zero();
+                                  confirmCode.Zero();
+                                  retValue = KErrAbort; 
+                                }
+                            else //Check against security code
+                                {
+                                    securityCode = aRemoteLockCode;
+                                    iWait->SetRequestType( EMobilePhoneVerifySecurityCode );
+                                    iPhone.VerifySecurityCode( iWait->iStatus, secCodeType, securityCode, unblockCode );
+                                    res = iWait->WaitForRequestL();
+                                }
+                        }
+					
+                    }
+               //User pressed cancel        
+               if(buttonId != EEikBidOk)
+                    {
+                      // Set the code length to zero leaving no trash for possible retry
+                      // Report error and let the user try again 
+                      aRemoteLockCode.Zero();
+                      confirmCode.Zero();
+                      retValue = KErrAbort; 
+                    }
+                }
+
+            // ----- Enable DOS device lock (Security code query) -------------
+
+            if ( retValue == KErrNone )
+                {
+                // Enable lock setting in domestic OS. It is safe to enable the 
+                // lock setting since RemoteLock API requires remote locking to
+                // be enabled when changing or setting the remote lock message.
+                retValue = RemoteLockSetLockSettingL( ETrue );
+                }
+            }
+        }
+    else //User pressed Cancel
+        {
+        // Set the code length to zero leaving no trash for possible retry
+        aRemoteLockCode.Zero();
+        confirmCode.Zero();
+        retValue = KErrAbort;
+        }
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::ChangeRemoteLockCodeL() - Exit" ) );
+    #endif // _DEBUG
+
+    return retValue;
+    #else //! RD_REMOTELOCK
+    return KErrNotSupported;
+    #endif //RD_REMOTELOCK
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::RemoteLockSetLockSettingL()
+// Changes lock setting in domestic OS. Changing the domestic OS lock setting
+// requires user to enter the security code.
+// ----------------------------------------------------------
+//
+TInt CSecuritySettings::RemoteLockSetLockSettingL( TBool aLockSetting )
+    {
+    #ifdef RD_REMOTELOCK
+    TInt retValue( KErrNone );
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::RemoteLockSetLockSettingL( %d ) - Enter" ), aLockSetting );
+    #endif // _DEBUG
+
+    RMobilePhone::TMobilePhoneLockSetting lockSetting = RMobilePhone::ELockSetEnabled;
+    RMobilePhone::TMobilePhoneLock        lockType    = RMobilePhone::ELockPhoneDevice;
+
+    if ( aLockSetting )
+        {
+        lockSetting = RMobilePhone::ELockSetEnabled;
+        }
+    else
+        {
+        lockSetting = RMobilePhone::ELockSetDisabled;
+        }
+
+    iWait->SetRequestType( EMobilePhoneSetLockSetting );
+    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+    iPhone.SetLockSetting( iWait->iStatus, lockType, lockSetting );
+
+    // Wait for code verify to complete
+    retValue = iWait->WaitForRequestL();
+
+    switch( retValue )
+        {
+        case KErrNone:
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - EMobilePhoneSetLockSetting request returned KErrNone" ) );
+            #endif // _DEBUG
+            break;
+
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - EMobilePhoneSetLockSetting request returned KErrLocked" ) );
+            #endif // _DEBUG
+            //Error note is shown in CSecurityHandler::PassPhraseRequired()
+            break;
+
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - EMobilePhoneSetLockSetting request returned KErrAccessDenied" ) );
+            #endif // _DEBUG
+            // Security code was entered erroneously
+            //Error note is shown in CSecurityHandler::PassPhraseRequired()
+            break;
+
+        case KErrAbort:
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - EMobilePhoneSetLockSetting request returned KErrAbort" ) );
+            #endif // _DEBUG
+            break;
+
+        default:
+            #ifdef _DEBUG
+            RDebug::Print( _L( "(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - EMobilePhoneSetLockSetting request returned: %d"), retValue );
+            #endif // _DEBUG
+            break;
+        }
+
+    #ifdef _DEBUG
+    RDebug::Print(_L("(SecUi)CSecuritySettings::RemoteLockSetLockSettingL() - Exit" ) );
+    #endif // _DEBUG
+
+    return retValue;
+    #else //! RD_REMOTELOCK
+    return KErrNotSupported;
+    #endif //RD_REMOTELOCK
+    }
+
+
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangeSimSecurityL()
+// Changes SIM security
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::ChangeSimSecurityL()
+    {    
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeSimSecurityL()"));
+    #endif
+
+    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneToICC;
+    RMobilePhone::TMobilePhoneLockSetting lockChangeSetting;
+    CCoeEnv* coeEnv = CCoeEnv::Static();
+    CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_SECURITY_LBX);
+    CleanupStack::PushL(items);
+                        
+    //get lock info
+    iWait->SetRequestType(EMobilePhoneGetLockInfo);
+    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+    TInt status = iWait->WaitForRequestL();
+    User::LeaveIfError(status);
+    TInt currentItem = 0;
+
+    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeSimSecurityL()lockInfo: ELockSetDisabled"));
+        #endif
+        currentItem = 1;  // off
+        }
+                        
+    TInt oldItem = currentItem;
+
+    CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_SECURITY_SETTING_PAGE, currentItem, items);
+    CleanupStack::PushL(dlg);
+    
+
+    CleanupStack::Pop(); // dlg
+    if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
+        {
+        CleanupStack::PopAndDestroy();    // items
+        return EFalse;
+        }    
+
+
+
+    if (currentItem == 1)
+        {
+        lockChangeSetting = RMobilePhone::ELockSetDisabled;
+        }
+    else
+        {
+        lockChangeSetting = RMobilePhone::ELockSetEnabled;
+        }
+
+    CleanupStack::PopAndDestroy();    // items 
+    
+    iWait->SetRequestType(EMobilePhoneSetLockSetting);
+    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+    iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+    status = iWait->WaitForRequestL();
+
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeSimSecurityL(): RETURN CODE: %d"), status);
+    #endif        
+    switch(status)
+        {
+        case KErrNone:
+            {
+            break;
+            }        
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            {    
+            // code was entered erroneously
+            return ChangeSimSecurityL();
+            }    
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            {
+            return ChangeSimSecurityL();
+            }
+        case KErrAbort:
+            {
+            return EFalse;
+            }
+        default:
+            {
+            ShowErrorNoteL(status);
+            return ChangeSimSecurityL();
+            }
+        }
+    
+    return ETrue;
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangePinRequestL()
+// Changes PIN1 request
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::ChangePinRequestL()
+    {    
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL()"));
+    #endif      
+    TInt simState;
+    TInt err( KErrGeneral );
+    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+    User::LeaveIfError( err );
+    TBool simRemoved(simState == ESimNotPresent);
+
+    if ( simRemoved )
+        {
+        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+        return EFalse;;
+        }
+
+    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockICC;
+
+    RMobilePhone::TMobilePhoneLockSetting lockChangeSetting;
+    
+    CCoeEnv* coeEnv = CCoeEnv::Static();
+    CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_PIN_LBX);
+    CleanupStack::PushL(items);
+                        
+    //get lock info
+    iWait->SetRequestType(EMobilePhoneGetLockInfo);
+    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+    TInt status = iWait->WaitForRequestL();
+    User::LeaveIfError(status);                    
+    TInt currentItem = 0;
+
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() GetLockInfo"));
+    #endif
+
+    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() lockInfo: ELockSetDisabled"));
+        #endif
+        currentItem = 1;  // off
+        }
+                        
+    TInt oldItem = currentItem;
+
+    CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_PIN_SETTING_PAGE, currentItem, items);
+    CleanupStack::PushL(dlg);
+    
+
+    CleanupStack::Pop(); // dlg
+    if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
+        {
+        CleanupStack::PopAndDestroy();    // items
+        return EFalse;
+        }    
+
+
+    if (currentItem == 1)
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetDisabled"));
+        #endif
+        lockChangeSetting = RMobilePhone::ELockSetDisabled;
+        }
+    else
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetEnabled"));
+        #endif
+        lockChangeSetting = RMobilePhone::ELockSetEnabled;
+        }
+
+    CleanupStack::PopAndDestroy();    // items 
+
+    // Raise a flag to indicate that the PIN
+    // request coming from ETEL has originated from SecUi and not from Engine.
+    TInt tRet = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
+    if ( tRet != KErrNone )
+        {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL():\
+            FAILED to set the SECUI query Flag: %d"), tRet);
+        #endif
+        }
+    // Change the lock setting
+    iWait->SetRequestType(EMobilePhoneSetLockSetting);
+    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+    iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+    status = iWait->WaitForRequestL();
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::ChangePinRequestL(): RETURN CODE: %d"), status);
+    #endif
+
+    // Lower the flag                             
+    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
+
+    switch(status)
+        {
+        case KErrNone:
+            {
+            break;
+            }
+        case KErrGsm0707OperationNotAllowed:
+            {
+            // not allowed with this sim
+            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+            return EFalse;
+            }
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            {    
+            // code was entered erroneously
+            return ChangePinRequestL();
+            }    
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            {
+            return ETrue;
+            }
+        case KErrAbort:
+            {
+            return EFalse;
+            }
+        default:
+            {
+            return ChangePinRequestL();
+            }
+        }
+    
+    return ETrue;
+    }
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::ChangeUPinRequestL()
+// Changes UPIN request on/off
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::ChangeUPinRequestL()
+    {
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinRequestL()"));
+        #endif
+        
+        TInt simState;
+        TInt err( KErrGeneral );
+        err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
+        User::LeaveIfError( err );
+        TBool simRemoved(simState == ESimNotPresent);
+    
+        if ( simRemoved )
+            {
+            ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+            return EFalse;
+            }
+    
+        RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+        RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+        RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockUniversalPin;
+    
+        RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockSetDisabled;
+        
+        CCoeEnv* coeEnv = CCoeEnv::Static();
+        CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_UPIN_LBX);
+        CleanupStack::PushL(items);
+                            
+        //get lock info
+        iWait->SetRequestType(EMobilePhoneGetLockInfo);
+        iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+        TInt status = iWait->WaitForRequestL();
+        User::LeaveIfError(status);                    
+        TInt currentItem = 0;
+    
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinRequestL() GetLockInfo"));
+        #endif
+    
+        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangeUPinRequestL() lockInfo: ELockSetDisabled"));
+            #endif
+            currentItem = 1;  // off
+            }
+                            
+        TInt oldItem = currentItem;
+    
+        CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_UPIN_SETTING_PAGE, currentItem, items);
+        CleanupStack::PushL(dlg);
+        
+    
+        CleanupStack::Pop(); // dlg
+        if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
+            {
+            CleanupStack::PopAndDestroy();    // items
+            return EFalse;
+            }    
+    
+    
+       if (currentItem == 1)
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetDisabled"));
+            #endif
+            lockChangeSetting = RMobilePhone::ELockSetDisabled;
+            }
+        else
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::ChangePinRequestL() currentItem: ELockSetEnabled"));
+            #endif
+            lockChangeSetting = RMobilePhone::ELockSetEnabled;
+            }
+    
+        CleanupStack::PopAndDestroy();    // items 
+    
+        // Raise a flag to indicate that the UPIN
+        // request coming from ETEL has originated from SecUi and not from Engine.
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);                              
+        // Change the lock setting
+        iWait->SetRequestType(EMobilePhoneSetLockSetting);
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+        iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+        status = iWait->WaitForRequestL();
+        #if defined(_DEBUG)
+        RDebug::Print( _L("(SECUI)CSecuritySettings::ChangeUPinRequestL(): RETURN CODE: %d"), status);
+        #endif
+    
+        // Lower the flag                           
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
+        
+        switch(status)
+            {
+            case KErrNone:
+                {
+                break;
+                }
+            case KErrGsm0707OperationNotAllowed:
+                {
+                // not allowed with this sim
+                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                return EFalse;
+                }
+            case KErrGsm0707IncorrectPassword:
+            case KErrAccessDenied:
+                {    
+                // code was entered erroneously
+                return ChangeUPinRequestL();
+                }    
+            case KErrGsmSSPasswordAttemptsViolation:
+            case KErrLocked:
+                {
+                return EFalse;
+                }
+            case KErrAbort:
+                {
+                return EFalse;
+                }
+            default:
+                {
+                ShowErrorNoteL(status);
+                return ChangeUPinRequestL();
+                }
+            }
+        
+        return ETrue;
+      }
+    else
+        return EFalse;
+
+    }
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::SwitchPinCodesL()
+// Changes the pin code currently in use (PIN/UPIN)
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::SwitchPinCodesL()
+    { 
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL()"));
+        #endif 
+    
+        // If we are in simless offline mode the PIN codes can't obviously be switched
+        TInt simState;
+        TInt err( KErrGeneral );
+        err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);    
+        User::LeaveIfError( err );
+        TBool simRemoved(simState == ESimNotPresent);
+    
+        if ( simRemoved )
+            {
+            ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
+            return EFalse;
+            }
+    
+       
+        RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockUniversalPin;
+        RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockReplaced;                       
+        RMobilePhone::TMobilePhoneSecurityCode activeCode;
+     
+        iCustomPhone.GetActivePin(activeCode);
+    
+        RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;    
+        RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() GetLockInfo"));
+        #endif    
+        iWait->SetRequestType(EMobilePhoneGetLockInfo);
+    
+        if (activeCode == RMobilePhone::ESecurityUniversalPin)
+            {
+             lockType = RMobilePhone::ELockUniversalPin;
+             iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+             TInt res = iWait->WaitForRequestL();
+             User::LeaveIfError(res);
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() Lock Info got: UPIN"));
+            #endif 
+            }
+        else
+            {
+             lockType = RMobilePhone::ELockICC;
+             iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
+             TInt res = iWait->WaitForRequestL();
+             User::LeaveIfError(res);
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() Lock Info got: PIN"));
+            #endif 
+            }
+    
+        // code request must be ON to change active code.
+        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
+           {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() CODE REQ NOT ON."));
+            #endif
+            if (activeCode == RMobilePhone::ESecurityUniversalPin)
+                {
+                ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                }
+            else
+                {
+                ShowResultNoteL(R_PIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                }
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() CODE REQ NOT ON NOTE END."));
+            #endif 
+            return EFalse;
+            }
+    
+        
+        
+        CCoeEnv* coeEnv = CCoeEnv::Static();
+        CDesCArrayFlat* items = coeEnv->ReadDesC16ArrayResourceL(R_CODE_LBX);
+        CleanupStack::PushL(items);
+    
+        iCustomPhone.GetActivePin(activeCode);
+        TInt currentItem = 0;
+    
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() GetLockInfo"));
+        #endif
+    
+        if (activeCode == RMobilePhone::ESecurityUniversalPin)
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() active code: UPIN"));
+            #endif
+            currentItem = 1;  // UPIN
+            }
+                            
+        TInt oldItem = currentItem;
+    
+        CAknRadioButtonSettingPage* dlg = new (ELeave)CAknRadioButtonSettingPage(R_CODE_IN_USE_SETTING_PAGE, currentItem, items);
+        CleanupStack::PushL(dlg);
+        
+    
+        CleanupStack::Pop(); // dlg
+        if ( !(dlg->ExecuteLD(CAknSettingPage::EUpdateWhenChanged)) || oldItem==currentItem )
+            {
+            CleanupStack::PopAndDestroy();    // items
+            return EFalse;
+            }    
+    
+    
+       if (currentItem == 1)
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() currentItem: UPIN"));
+            #endif
+            lockType = RMobilePhone::ELockUniversalPin;
+            }
+        else
+            {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::SwitchPinCodesL() currentItem: PIN1"));
+            #endif
+            lockType = RMobilePhone::ELockICC;
+            }
+    
+        CleanupStack::PopAndDestroy();    // items 
+    
+        // Raise a flag to indicate that the code
+        // request coming from ETEL has originated from SecUi and not from Engine.
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);                           
+        // Change the lock setting
+        iWait->SetRequestType(EMobilePhoneSetLockSetting);
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
+        iPhone.SetLockSetting(iWait->iStatus,lockType,lockChangeSetting);
+        TInt status = iWait->WaitForRequestL();
+        #if defined(_DEBUG)
+        RDebug::Print( _L("(SECUI)CSecuritySettings::SwitchPinCodesL(): RETURN CODE: %d"), status);
+        #endif
+        // Lower the flag                            
+        RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsETelAPIOriginated);
+        
+        switch(status)
+            {
+            case KErrNone:
+                {
+                break;
+                }
+            case KErrGsm0707OperationNotAllowed:
+                {
+                // not allowed with this sim
+                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                return EFalse;
+                }
+            case KErrGsm0707IncorrectPassword:
+            case KErrAccessDenied:
+                {    
+                // code was entered erroneously
+                return SwitchPinCodesL();
+                }    
+            case KErrGsmSSPasswordAttemptsViolation:
+            case KErrLocked:
+                {
+                return EFalse;
+                }
+            case KErrAbort:
+                {
+                return EFalse;
+                }
+            default:
+                {
+                ShowErrorNoteL(status);
+                return SwitchPinCodesL();
+                }
+            }
+        
+        return ETrue;
+      }
+    else
+        return EFalse;
+    }
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::IsLockEnabledL()
+// Return is lock enabled/disabled
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::IsLockEnabledL(RMobilePhone::TMobilePhoneLock aLockType)
+    {
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::IsLockEnabledL()"));
+    #endif
+    #ifdef __WINS__
+
+    return EFalse;
+
+    #else  //WINS
+
+    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
+    
+    //get lock info
+    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
+    iWait->SetRequestType(EMobilePhoneGetLockInfo);
+    iPhone.GetLockInfo(iWait->iStatus, aLockType, lockInfoPkg);
+    TInt res = iWait->WaitForRequestL();
+
+    if (res != KErrNone)
+        return ETrue;
+
+     //lock is enabled return true
+    if (lockInfo.iSetting == RMobilePhone::ELockSetEnabled)
+        {
+        return ETrue;                        
+        }
+
+    // lock is disabled return false
+    return EFalse;
+        
+    #endif 
+
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::AskSecCodeL()
+// For asking security code e.g in settings
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::AskSecCodeL()
+    {
+    return iSecurityHandler->AskSecCodeL();
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::AskPin2L()
+// Asks PIN2
+// ----------------------------------------------------------
+//    
+EXPORT_C TBool CSecuritySettings::AskPin2L()
+    {    
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L()"));
+    #endif
+    TInt ret = 0;
+    // check if pin2 is blocked...
+    RMmCustomAPI::TSecurityCodeType secCodeType = RMmCustomAPI::ESecurityCodePin2;
+    RMobilePhone::TMobilePhoneSecurityCode etelsecCodeType(RMobilePhone::ESecurityCodePin2);
+    RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
+    RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
+    TBool isBlocked = EFalse;
+    //Check whether PIN2 is blocked
+    ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+    
+	#if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L() IsBlocked return value: %d"), ret);
+    #endif
+    if(isBlocked)
+        return EFalse;
+    
+    if (ret != KErrNone)
+        {    
+        switch (ret)
+            {
+			// PIN2 Blocked.
+            case KErrGsm0707SIMPuk2Required:
+                break;
+            case KErrGsmSSPasswordAttemptsViolation:
+            case KErrLocked:
+                // Pin2 features blocked permanently!
+                ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
+                break;
+            case KErrGsm0707SimNotInserted:
+                // not allowed with this sim
+                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+                break;
+            default:
+                ShowErrorNoteL(ret);
+                break;
+            }
+        return EFalse;
+        }
+    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
+    iPhone.GetSecurityCodeInfo(iWait->iStatus, etelsecCodeType, codeInfoPkg);
+    ret = iWait->WaitForRequestL();
+        
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): get PIN2 info result: %d"), ret);
+    TInt attempts(codeInfo.iRemainingEntryAttempts);
+    RDebug::Print(_L("(SECUI)CSecurityHandler::Pin2RequiredL(): attempts remaining: %d"), attempts);
+    #endif
+    User::LeaveIfError(ret);
+    
+    // ask pin2 code  
+    RMobilePhone::TMobilePassword password;
+    CCodeQueryDialog* dlg = new (ELeave) CCodeQueryDialog (password,SEC_C_PIN_CODE_MIN_LENGTH,SEC_C_PIN_CODE_MAX_LENGTH,ESecUiNone);  
+    if(codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
+            ret = dlg->ExecuteLD(R_PIN2_QUERY);
+    else if(codeInfo.iRemainingEntryAttempts > KLastRemainingInputAttempt)
+            {
+                HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_REMAINING_PIN2_ATTEMPTS, codeInfo.iRemainingEntryAttempts );
+                ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
+                CleanupStack::PopAndDestroy(queryPrompt);
+            }
+    else
+            {
+                HBufC* queryPrompt = StringLoader::LoadLC(R_SECUI_FINAL_PIN2_ATTEMPT);
+                ret = dlg->ExecuteLD(R_PIN2_QUERY, *queryPrompt);
+                CleanupStack::PopAndDestroy(queryPrompt);   
+            } 
+       
+    if (!ret)
+        {
+		#if defined(_DEBUG)
+		RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L(): Cancel pressed"));
+		#endif
+        return EFalse;
+        }
+    
+    // verify code
+    RMobilePhone::TMobilePassword required_fourth;
+    iWait->SetRequestType(EMobilePhoneVerifySecurityCode);
+    iPhone.VerifySecurityCode(iWait->iStatus,etelsecCodeType, password, required_fourth);
+    TInt res = iWait->WaitForRequestL();
+
+	#if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::AskPin2L() VerifySecurityCode return value: %d"), res);
+    #endif
+
+    switch(res)
+        {        
+        case KErrNone:
+            break;
+        case KErrGsm0707IncorrectPassword:
+        case KErrAccessDenied:
+            // code was entered erroneously
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            return    AskPin2L();    
+        case KErrGsm0707OperationNotAllowed:
+            // not allowed with this sim
+            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
+            return EFalse;
+        case KErrGsmSSPasswordAttemptsViolation:
+        case KErrLocked:
+            // code was blocked
+            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
+            return EFalse;        
+        default:
+            ShowErrorNoteL(res);
+            return    AskPin2L();
+        }
+
+    return ETrue;
+    }
+//
+// ----------------------------------------------------------
+// CSecuritySettings::SetFdnModeL()
+// Activates or deactivates Fixed Dialling Numbers (FDN) mode.  
+// ----------------------------------------------------------
+//
+EXPORT_C void CSecuritySettings::SetFdnModeL()
+    {    
+    /*****************************************************
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::SetFdnModeL()"));
+    #endif
+    RMmCustomAPI::TSecurityCodeType secCodeType = RMmCustomAPI::ESecurityCodePin2;
+    
+    TBool isBlocked = EFalse;
+    TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+    
+    if(isBlocked)
+        return;
+    
+    if (ret != KErrNone)
+        {    
+        switch (ret)
+            {
+             // PIN2 Blocked.
+            case KErrGsm0707SIMPuk2Required:
+                break;
+            case KErrGsmSSPasswordAttemptsViolation:
+            case KErrLocked:
+                // Pin2 features blocked permanently!
+                ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
+                break;
+            case KErrGsm0707SimNotInserted:
+                // not allowed with this sim
+                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);    
+                break;
+            default:
+                ShowErrorNoteL(ret);
+                break;
+            }
+        return;
+        }
+
+    
     TInt status = KErrNone;
 
     RMobilePhone::TMobilePhoneFdnStatus fdnMode;
     RMobilePhone::TMobilePhoneFdnSetting fdnSet;
-
+                    
     iPhone.GetFdnStatus(fdnMode);
-
+    
     if (fdnMode == RMobilePhone::EFdnActive)
         {
         fdnSet = RMobilePhone::EFdnSetOff;
         }
     else
         {
-        fdnSet = RMobilePhone::EFdnSetOn;
+        fdnSet = RMobilePhone::EFdnSetOn;   
         }
-    RDEBUG("fdnSet", fdnSet);
-    // Change the FDN setting
+        
+      // Change the FDN setting
     iWait->SetRequestType(EMobilePhoneSetFdnSetting);
     RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-    RDEBUG("SetFdnSetting", 0);
     iPhone.SetFdnSetting(iWait->iStatus, fdnSet);
-    RDEBUG("WaitForRequestL", 0);
     status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-    if (status == KErrNotSupported)
-        status = KErrNone;
-#endif
 
-    RDEBUG("status", status);
-    switch (status)
-        {
+    #if defined(_DEBUG)
+    RDebug::Print( _L("(SECUI)CSecuritySettings::SetFdnModeL(): RETURN CODE: %d"), status);
+    #endif
+    switch(status)
+        {        
         case KErrNone:
             break;
         case KErrGsm0707IncorrectPassword:
@@ -1178,21 +2401,23 @@
         default:
             ShowErrorNoteL(status);
             break;
-        }
-    }
+        }    
+  }
 //
 // ----------------------------------------------------------
 // CSecuritySettings::GetFndMode()
 // Retrieves the current Fixed Dialling Numbers mode
 // ----------------------------------------------------------
-// qtdone
-EXPORT_C TInt CSecuritySettings::GetFdnMode(RMobilePhone::TMobilePhoneFdnStatus& aFdnMode)
+//
+EXPORT_C TInt CSecuritySettings::GetFdnMode (RMobilePhone::TMobilePhoneFdnStatus& aFdnMode)
     {
     /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-    RDEBUG("0", 0);
+    *    Series 60 Customer / ETel
+    *    Series 60  ETel API
+    *****************************************************/
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::GetFdnMode()"));
+    #endif
     return iPhone.GetFdnStatus(aFdnMode);
     }
 
@@ -1201,12 +2426,24 @@
 // CSecuritySettings::ShowErrorNoteL()
 // Shows error note
 // ----------------------------------------------------------
-// qtdone
+//
 void CSecuritySettings::ShowErrorNoteL(TInt aError)
     {
-    RDEBUG("aError", aError);
-
-    ShowResultNoteL(aError, CAknNoteDialog::EErrorTone);
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ShowErrorNoteL()"));
+    #endif
+    // Let's create TextResolver instance for error resolving...
+    CTextResolver* textresolver = CTextResolver::NewLC(); 
+    // Resolve the error
+    TPtrC errorstring;
+    errorstring.Set( textresolver->ResolveErrorString( aError ) );
+    CAknNoteDialog* noteDlg = new (ELeave) CAknNoteDialog(REINTERPRET_CAST(CEikDialog**,&noteDlg));
+    noteDlg->PrepareLC(R_CODE_ERROR);
+    noteDlg->SetTextL((TDesC&)errorstring);
+    noteDlg->SetTimeout(CAknNoteDialog::ELongTimeout);
+    noteDlg->SetTone(CAknNoteDialog::EErrorTone);
+    noteDlg->RunLD();
+    CleanupStack::PopAndDestroy(); // resolver    
     }
 
 //
@@ -1214,258 +2451,17 @@
 // CSecuritySettings::ShowResultNoteL()
 // Shows result note
 // ----------------------------------------------------------
-// qtdone
+//
 void CSecuritySettings::ShowResultNoteL(TInt aResourceID, CAknNoteDialog::TTone aTone)
-    {
-    RDEBUG("aResourceID", aResourceID);
-
-    CHbDeviceMessageBoxSymbian* messageBox = CHbDeviceMessageBoxSymbian::NewL(CHbDeviceMessageBoxSymbian::EWarning);
-    CleanupStack::PushL(messageBox);
-    TInt satisfactoryIcon = 0;	// might change later, in some scenarios
-    _LIT(KText, "ShowResultNoteL: ");
-    TBuf<0x200> title;
-    TBuf<0x200> titleTr;
-    title.Zero();
-    titleTr.Zero();
-    title.Append(KText);
-    title.AppendNum(aResourceID);
-    _LIT(KSeparator, " ");
-    title.Append(KSeparator);
-    switch (aResourceID)
-        {
-        case 0:
-            titleTr.Append(_L("OK"));
-            title.Append(_L("OK"));
-            satisfactoryIcon = 1;
-            break;
-        case KErrGsm0707IncorrectPassword:
-            titleTr.Append(_L("txt_pin_code_dpophead_wrong_pin_code")); // TODO this also happens for lock-code
-            title.Append(_L("Incorrect Password"));
-            break;
-        case KErrAccessDenied:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_access_denied"));
-            title.Append(_L("Access Denied"));
-            break;
-        case KErrGsmSSPasswordAttemptsViolation:
-            titleTr.Append(_L("KErrGsmSSPasswordAttemptsViolation"));
-            title.Append(_L("Password Attempts Violation"));
-            break;
-        case KErrLocked:
-            titleTr.Append(_L("KErrLocked"));
-            title.Append(_L("Locked"));
-            break;
-        case KErrGsm0707OperationNotAllowed:
-            titleTr.Append(_L("KErrGsm0707OperationNotAllowed"));
-            title.Append(_L("Operation Not Allowed"));
-            break;
-        case KErrAbort:
-            titleTr.Append(_L("KErrAbort"));
-            title.Append(_L("Abort"));
-            break;
-        case KErrNotSupported:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_operation_not_supported"));
-            title.Append(_L("Not Supported"));
-            break;
-        case R_SEC_BLOCKED:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_security_blocked"));
-            title.Append(_L("BLOCKED"));
-            break;
-        case R_CODE_ERROR:
-            titleTr.Append(_L("R_CODE_ERROR"));
-            title.Append(_L("ERROR"));
-            break;
-        case KErrGsmInvalidParameter:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_gsm_invalid_parameter"));
-            title.Append(_L("Invalid Parameter"));
-            break;
-        case R_CONFIRMATION_NOTE:
-            titleTr.Append(_L("R_CONFIRMATION_NOTE"));
-            title.Append(_L("CONFIRMED"));
-            satisfactoryIcon = 1;
-            break;
-        case R_CODES_DONT_MATCH:
-            titleTr.Append(_L("R_CODES_DONT_MATCH"));
-            title.Append(_L("CODES DONT MATCH"));
-            break;
-        case R_PIN_CODE_CHANGED_NOTE:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_code_chaged")); // note the spelling mistake "chaged"
-            title.Append(_L("PIN CODE CHANGED"));
-            satisfactoryIcon = 1;
-            break;
-        case R_SECURITY_CODE_CHANGED_NOTE:
-            titleTr.Append(_L("R_SECURITY_CODE_CHANGED_NOTE"));
-            title.Append(_L("SECURITY CODE CHANGED"));
-            satisfactoryIcon = 1;
-            break;
-        case R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_autolock_must_be_active"));
-            title.Append(_L("AUTOLOCK MUST BE ACTIVE"));
-            break;
-        case KErrServerTerminated:
-            titleTr.Append(_L("KErrServerTerminated"));
-            title.Append(_L("Server Terminated"));
-            break;
-        case KErrServerBusy:
-            titleTr.Append(_L("KErrServerBusy"));
-            title.Append(_L("Server Busy"));
-            break;
-        case R_PIN2_REJECTED:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_pin2_rejected"));
-            title.Append(_L("PIN2 REJECTED"));
-            break;
-        case R_OPERATION_NOT_ALLOWED:
-            titleTr.Append(_L("R_OPERATION_NOT_ALLOWED"));
-            title.Append(_L("OPERATION NOT ALLOWED"));
-            break;
-        case R_UPIN_NOT_ALLOWED:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_upin_not_allowed"));
-            title.Append(_L("UPIN NOT ALLOWED"));
-            break;
-        case R_PIN_NOT_ALLOWED:
-            titleTr.Append(_L("R_PIN_NOT_ALLOWED"));
-            title.Append(_L("PIN NOT ALLOWED"));
-            break;
-        case R_INSERT_SIM:
-            titleTr.Append(_L("txt_pin_code_dpopinfo_insert_sim"));
-            title.Append(_L("INSERT SIM"));
-            break;
-        case R_SIM_ON:
-            titleTr.Append(_L("R_SIM_ON"));
-            title.Append(_L("SIM ON"));
-            break;
-        case KErrTimedOut:
-            titleTr.Append(_L("KErrTimedOut"));
-            title.Append(_L("Timed Out"));
-            break;
-        case R_PIN2_CODE_CHANGED_NOTE:
-            titleTr.Append(_L("R_PIN2_CODE_CHANGED_NOTE"));
-            title.Append(_L("PIN2 CODE CHANGED"));
-            break;
-        case KErrArgument:
-            titleTr.Append(_L("KErrArgument"));
-            title.Append(_L("Error Argument"));
-            break;
-        case R_SIM_OFF:
-            titleTr.Append(_L("R_SIM_OFF"));
-            title.Append(_L("SIM OFF"));
-            break;
-        case R_SIM_ALLREADY_OFF:
-            titleTr.Append(_L("R_SIM_ALLREADY_OFF"));
-            title.Append(_L("SIM ALLREADY OFF"));
-            break;
-        case R_SIM_NOT_ALLOWED:
-            titleTr.Append(_L("R_SIM_NOT_ALLOWED"));
-            title.Append(_L("SIM NOT ALLOWED"));
-            break;
-        case R_REMOTELOCK_INVALID_CODE:
-            titleTr.Append(_L("R_REMOTELOCK_INVALID_CODE"));
-            title.Append(_L("REMOTELOCK INVALID CODE"));
-            break;
-
-        case KErrTDevicelockPolicies+EDeviceLockAutolockperiod:
-            titleTr.Append(_L("EDeviceLockAutolockperiod"));
-            title.Append(_L("EDeviceLockAutolockperiod"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMaxAutolockPeriod:
-            titleTr.Append(_L("EDeviceLockMaxAutolockPeriod"));
-            title.Append(_L("EDeviceLockMaxAutolockPeriod"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMinlength:
-            titleTr.Append(_L("EDeviceLockMinlength"));
-            title.Append(_L("EDeviceLockMinlength"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMaxlength:
-            titleTr.Append(_L("EDeviceLockMaxlength"));
-            title.Append(_L("EDeviceLockMaxlength"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockRequireUpperAndLower:
-            titleTr.Append(_L("EDeviceLockRequireUpperAndLower"));
-            title.Append(_L("EDeviceLockRequireUpperAndLower"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockRequireCharsAndNumbers:
-            titleTr.Append(_L("EDeviceLockRequireCharsAndNumbers"));
-            title.Append(_L("EDeviceLockRequireCharsAndNumbers"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockAllowedMaxRepeatedChars:
-            titleTr.Append(_L("EDeviceLockAllowedMaxRepeatedChars"));
-            title.Append(_L("EDeviceLockAllowedMaxRepeatedChars"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockHistoryBuffer:
-            titleTr.Append(_L("EDeviceLockHistoryBuffer"));
-            title.Append(_L("EDeviceLockHistoryBuffer"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockPasscodeExpiration:
-            titleTr.Append(_L("EDeviceLockPasscodeExpiration"));
-            title.Append(_L("EDeviceLockPasscodeExpiration"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMinChangeTolerance:
-            titleTr.Append(_L("EDeviceLockMinChangeTolerance"));
-            title.Append(_L("EDeviceLockMinChangeTolerance"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMinChangeInterval:
-            titleTr.Append(_L("EDeviceLockMinChangeInterval"));
-            title.Append(_L("EDeviceLockMinChangeInterval"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockDisallowSpecificStrings:
-            titleTr.Append(_L("EDeviceLockDisallowSpecificStrings"));
-            title.Append(_L("EDeviceLockDisallowSpecificStrings"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockAllowedMaxAtempts:
-            titleTr.Append(_L("EDeviceLockAllowedMaxAtempts"));
-            title.Append(_L("EDeviceLockAllowedMaxAtempts"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockConsecutiveNumbers:
-            titleTr.Append(_L("EDeviceLockConsecutiveNumbers"));
-            title.Append(_L("EDeviceLockConsecutiveNumbers"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockMinSpecialCharacters:
-            titleTr.Append(_L("EDeviceLockMinSpecialCharacters"));
-            title.Append(_L("EDeviceLockMinSpecialCharacters"));
-            break;
-        case KErrTDevicelockPolicies+EDeviceLockSingleCharRepeatNotAllowed:
-            titleTr.Append(_L("EDeviceLockSingleCharRepeatNotAllowed"));
-            title.Append(_L("EDeviceLockSingleCharRepeatNotAllowed"));
-            break;
-        case KErrTDevicelockPolicies+EDevicelockTotalPolicies:
-            titleTr.Append(_L("EDevicelockTotalPolicies"));
-            title.Append(_L("EDevicelockTotalPolicies"));
-            break;
-
-        default: // " "
-            titleTr.Append(_L("Specific Error"));
-            title.Append(_L("Specific Error"));
-            break;
-            /* These ones are still unused */
-            // txt_pin_code_dpopinfo_ln_attempts_remaining
-            // txt_pin_code_dpopinfo_emergency_calls_only
-            // txt_pin_code_dpopinfo_if_failed_be_ready_with_puk
-        }
-
-    HBufC* stringHolder;
-    RDEBUG("titleTr", 1);
-    stringHolder = HbTextResolverSymbian::LoadLC(titleTr); // titleTr  should I    TRAP( err,    ?
-    RDEBUG("got stringHolder", 1);
-    messageBox->SetTextL(stringHolder->Des()); // title
-    RDEBUG("aResourceID", aResourceID);
-    RDEBUGSTR(titleTr);
-    _LIT(KIconNameWondering, "qtg_small_smiley_wondering");
-    _LIT(KIconNameSmile, "qtg_small_smiley_smile");
-    if (satisfactoryIcon==1)
-        messageBox->SetIconNameL(KIconNameSmile);
-    else
-        messageBox->SetIconNameL(KIconNameWondering);
-
-    if (aTone == CAknNoteDialog::EErrorTone) // another case is EConfirmationTone
-        {
-        messageBox->SetTimeout(messageBox->Timeout() * 2); // errors are displayed double time
-        }
-    // messageBox->ShowL();
-    RDEBUG("calling ExecL", 0);
-    CHbDeviceMessageBoxSymbian::TButtonId selection = messageBox->ExecL();	// this guarantees that it waits for the dismiss/timeout
-    RDEBUG("called ExecL.selection", selection);
-    CleanupStack::PopAndDestroy(stringHolder);
-    CleanupStack::PopAndDestroy(); // messageBox
-
+    {  
+    #if defined(_DEBUG)
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ShowResultNoteL()"));
+    RDebug::Print(_L("(SECUI)CSecuritySettings::ShowResultNoteL() Resource ID: %d"), aResourceID);
+    #endif
+    CAknNoteDialog* noteDlg = new (ELeave) CAknNoteDialog(REINTERPRET_CAST(CEikDialog**,&noteDlg));
+    noteDlg->SetTimeout(CAknNoteDialog::ELongTimeout);
+    noteDlg->SetTone(aTone);
+    noteDlg->ExecuteLD(aResourceID);
     }
 
 //
@@ -1473,1316 +2469,139 @@
 // CSecuritySettings::IsUpinSupportedL()
 // Return is UPIN supported
 // ----------------------------------------------------------
-// qtdone
+//
 EXPORT_C TBool CSecuritySettings::IsUpinSupportedL()
-    {
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    TBool isSupported = EFalse;
-    RDEBUG("wcdmaSupported", wcdmaSupported);
-    RDEBUG("upinSupported", upinSupported);
-    if (wcdmaSupported || upinSupported)
-        {
+{
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+    	#if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() BEGIN"));
+        #endif
+        #ifdef __WINS__
+    
+        return EFalse;
+    
+        #else  //WINS
+    
         RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-
+        
         //get lock info
         RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
         iWait->SetRequestType(EMobilePhoneGetLockInfo);
-        RDEBUG("GetLockInfo", 0);
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo"));
+        #endif
         iPhone.GetLockInfo(iWait->iStatus, RMobilePhone::ELockUniversalPin, lockInfoPkg);
-        RDEBUG("WaitForRequestL", 0);
         TInt res = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL res", res);
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo DONE"));
+        #endif
         if ((res == KErrNotSupported) || (res == KErrGsmInvalidParameter))
-            {
-            RDEBUG("0", 0);
-            isSupported = EFalse;
-            }
-        else
-            {
-            RDEBUG("1", 1);
-            isSupported = ETrue;
-            }
-        }
-    else
-        isSupported = EFalse;
-    RDEBUG("isSupported", isSupported);
-    return isSupported;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::IsUpinBlocked()
-// Return is a code blocked
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::IsUpinBlocked()
-    {
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    if (wcdmaSupported || upinSupported)
         {
-        RMmCustomAPI::TSecurityCodeType secCodeType;
-        secCodeType = RMmCustomAPI::ESecurityUniversalPin;
-        TBool isBlocked = EFalse;
-        RDEBUG("IsBlocked", 0);
-        TInt ret = iCustomPhone.IsBlocked(secCodeType, isBlocked);
-        RDEBUG("ret", ret);
-        RDEBUG("isBlocked", isBlocked);
-        return isBlocked;
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported(): NOT SUPPORTED"));
+            #endif
+            return EFalse;
         }
-    else
-        return EFalse;
-    }
-//
-// ----------------------------------------------------------
-// CSecuritySettings::IsUpinActive()
-// Return the code active in current application (PIN/UPIN)
-// ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::IsUpinActive()
-    {
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    if (wcdmaSupported || upinSupported)
-        {
-        RMobilePhone::TMobilePhoneSecurityCode activePin;
-        RDEBUG("GetActivePin", 0);
-        iCustomPhone.GetActivePin(activePin);
-        RDEBUG("activePin", activePin);
-        RDEBUG("RMobilePhone::ESecurityUniversalPin",
-                RMobilePhone::ESecurityUniversalPin);
-        if (activePin == RMobilePhone::ESecurityUniversalPin)
-            {
-            return ETrue;
-            }
-        return EFalse;
-        }
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported(): SUPPORTED: %d"), res);
+        #endif
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() END"));
+        #endif
+        return ETrue;
+            
+        #endif //WINS
+      }
     else
         return EFalse;
-    }
-
-/**************************/
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangePinParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption,
-        TInt aShowError)
-    {
-    RDEBUG("aFlags", aFlags);
-    RDEBUG("aOldPassword", 0);
-    RDEBUGSTR(aOldPassword);
-    RDEBUG("aNewPassword", 0);
-    RDEBUGSTR(aNewPassword);
-    RDEBUG("aCaption", 0);
-    RDEBUGSTR(aCaption);
-    RDEBUG("aShowError", aShowError);
-
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-
-    TInt simState;
-    TInt err(KErrGeneral);
-    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-    User::LeaveIfError(err);
-    TBool simRemoved(simState == ESimNotPresent);
-
-    RDEBUG("simRemoved", simRemoved);
-    if (simRemoved)
-        {
-        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-    RMobilePhone::TMobilePhoneSecurityCode secCodeType;
-    secCodeType = RMobilePhone::ESecurityCodePin1;
-
-    RMobilePhone::TMobilePassword oldPassword;
-    RMobilePhone::TMobilePassword newPassword;
-    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-    RMobilePhone::TMobilePassword required_fourth;
-    TInt queryAccepted = KErrCancel;
-
-    RDEBUG("0", 0);
-
-    RMobilePhone::TMobilePhoneLock lockType;
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-
-    lockType = RMobilePhone::ELockICC;
-
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-    RDEBUG("0", 0);
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    TInt res = KErrNone;
-    RDEBUG("GetLockInfo", 0);
-    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrTimedOut)
-        {
-        lockInfo.iSetting = RMobilePhone::ELockSetEnabled;
-        res = KErrNone;
-        }
-#endif
-
-    User::LeaveIfError(res);
-
-    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-        {
-        RDEBUG("RMobilePhone::ELockSetDisabled",
-                RMobilePhone::ELockSetDisabled);
-        ShowResultNoteL(R_PIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-
-    RDEBUG("0", 0);
-    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
-    RDEBUG("GetSecurityCodeInfo", 0);
-    iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported || res == KErrTimedOut)
-        {
-        res = KErrNone;
-        codeInfo.iRemainingEntryAttempts = KMaxNumberOfPINAttempts;
-        }
-#endif
-    User::LeaveIfError(res);
-
-    RDEBUG("codeInfo.iRemainingEntryAttempts",
-            codeInfo.iRemainingEntryAttempts);
-    if (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
-        codeInfo.iRemainingEntryAttempts = -1;
-
-    RDEBUG("checking aOldPassword", 0);
-    if (aOldPassword.Length() == 0)
-        {
-        RDEBUG("asking aOldPassword", 0);
-        /* request PIN using QT */
-        queryAccepted = KErrCancel;
-        CSecQueryUi *iSecQueryUi;
-        iSecQueryUi = CSecQueryUi::NewL();
-        TBuf<0x100> title;
-        title.Zero();
-        HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_pin_code"));
-        title.Append(stringHolder->Des());
-        CleanupStack::PopAndDestroy(stringHolder);
-        title.Append(_L("$"));
-        title.AppendNum(codeInfo.iRemainingEntryAttempts);
-        queryAccepted = iSecQueryUi->SecQueryDialog(title, oldPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-                | ESecUiEmergencyNotSupported | secCodeType);
-        RDEBUG("oldPassword", 0);
-        RDEBUGSTR(oldPassword);
-        RDEBUG("queryAccepted", queryAccepted);
-        delete iSecQueryUi;
-        if (queryAccepted != KErrNone)
-            return KErrAbort;
-        /* end request PIN using QT */
-
-        // verify it now, so that the user doesn't need to see the error _after_ typing the new ones
-        RDEBUG("VerifySecurityCode", 0);
-        iPhone.VerifySecurityCode(iWait->iStatus, secCodeType, oldPassword, required_fourth);
-        RDEBUG("WaitForRequestL", 0);
-        res = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-        if (res == KErrNotSupported)
-            res = KErrNone;
-#endif
-        if (res != KErrNone)
-            {
-            ShowResultNoteL(res, CAknNoteDialog::EErrorTone);
-            return res; // not sure if it's wise to exit now.
-            }
-
-        newPassword = _L("");
-        }
+}
+//
+// ----------------------------------------------------------
+// CSecuritySettings::IsCodeBlocked()
+// Return is a code blocked
+// ----------------------------------------------------------
+//
+EXPORT_C TBool CSecuritySettings::IsUpinBlocked()
+{
+TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+    #ifdef __WINS__
+        return EFalse;
+    #else//__WINS__
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() BEGIN"));
+        #endif
+    	RMmCustomAPI::TSecurityCodeType secCodeType;
+        secCodeType = RMmCustomAPI::ESecurityUniversalPin;
+        TBool isBlocked = EFalse;
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() IsBlocked"));
+        #endif
+        TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() DONE.RETURN: %d"), ret);
+        #endif
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked():isblocked: %d"), isBlocked);
+        #endif
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() END"));
+        #endif
+        return isBlocked;
+    #endif //__WINS__
+      }
     else
-        {
-        oldPassword.Copy(aOldPassword);
-        newPassword.Copy(aNewPassword);
-        }
-
-    RDEBUG("res", res);
-    while (newPassword.Length() == 0)
-        {
-        // this is not needed because the dialog won't allow to close, unless codes match
-        // codes do not match -> note -> ask new pin and verification codes again
-        // if(newPassword.Length()>0)
-        //  ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
-        newPassword = _L("");
-
-        // new pin code query
-        if (aOldPassword.Length() == 0) // only if input parameters are empty
-            {
-            queryAccepted = KErrCancel;
-            CSecQueryUi *iSecQueryUi;
-            iSecQueryUi = CSecQueryUi::NewL();
-            // this queries both, and verifies itself
-            TBuf<0x100> title;
-            title.Zero();
-            HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin_code"));
-            title.Append(stringHolder->Des());
-            CleanupStack::PopAndDestroy(stringHolder);
-            title.Append(_L("|"));
-            HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_verify_new_pin_code"));
-            title.Append(stringHolder2->Des());
-            CleanupStack::PopAndDestroy(stringHolder2);
-            queryAccepted = iSecQueryUi->SecQueryDialog(title, newPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-                    | ESecUiEmergencyNotSupported | secCodeType);
-            RDEBUG("newPassword", 1);
-            RDEBUGSTR(newPassword);
-            RDEBUG("queryAccepted", queryAccepted);
-            delete iSecQueryUi;
-            if (queryAccepted != KErrNone)
-                return KErrAbort;
-            RDEBUG("0", 0);
-            }
-        }
-
-    // send code
-    passwords.iOldPassword = oldPassword;
-    passwords.iNewPassword = newPassword;
-    RDEBUG("passwords", 0);
-    RDEBUGSTR(passwords.iOldPassword);
-    RDEBUGSTR(passwords.iNewPassword);
-    RDEBUG("SetRequestType", 0);
-    iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
-    RDEBUG("ChangeSecurityCode", 0);
-    iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported)
-        res = KErrNone;
-#endif
-
-    switch (res)
-        {
-        case KErrNone:
-            {
-            // code changed 
-            ShowResultNoteL(R_PIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
-            break;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            // code was entered erroneously. This is strange, because it was verified before
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            ChangePinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            // Pin1 blocked! 
-            return KErrLocked;
-            }
-        case KErrGsm0707OperationNotAllowed:
-            {
-            // not allowed with this sim
-            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-            return KErrGsm0707OperationNotAllowed;
-            }
-        case KErrAbort:
-            {
-            break;
-            }
-        default:
-            {
-            ShowErrorNoteL(res);
-            ChangePinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        }
-    return res;
-    }
-/*********************************************/
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangeUPinParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption,
-        TInt aShowError)
-    {
-    RDEBUG("aFlags", aFlags);
-    // the password parameters are not used
-    if (aOldPassword.Length() > 0)
-        RDEBUGSTR(aOldPassword);
-    if (aNewPassword.Length() > 0)
-        RDEBUGSTR(aNewPassword);
-
-    if (aCaption.Length() > 0)
-        RDEBUGSTR(aCaption);
-
-    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
-    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
-    if (!(wcdmaSupported || upinSupported))
-        {
-        RDEBUG("! upinSupported", upinSupported);
-        return KErrAccessDenied;
-        }
-
-    RDEBUG("upinSupported", upinSupported);
-    TInt simState;
-    TInt err(KErrGeneral);
-    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-    User::LeaveIfError(err);
-    TBool simRemoved(simState == ESimNotPresent);
-
-    if (simRemoved)
-        {
-        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-
-    RMobilePhone::TMobilePhoneSecurityCode secCodeType;
-    secCodeType = RMobilePhone::ESecurityUniversalPin;
-
-    RMobilePhone::TMobilePassword oldPassword;
-    RMobilePhone::TMobilePassword newPassword;
-    RMobilePhone::TMobilePassword verifcationPassword;
-    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-    RMobilePhone::TMobilePhoneLock lockType;
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-    TInt queryAccepted = KErrCancel;
-
-    lockType = RMobilePhone::ELockUniversalPin;
-
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    RDEBUG("GetLockInfo", 0);
-    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    TInt res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported)
-        {
-        res = KErrNone;
-        lockInfo.iSetting = RMobilePhone::ELockSetEnabled;
-        }
-#endif
-    User::LeaveIfError(res);
-
-    RDEBUG("lockInfo.iSetting", lockInfo.iSetting);
-    RDEBUG("RMobilePhone::ELockSetDisabled", RMobilePhone::ELockSetDisabled);
-    if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-        {
-        ShowResultNoteL(R_UPIN_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-
-    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
-    RDEBUG("GetSecurityCodeInfo", 0);
-    iPhone.GetSecurityCodeInfo(iWait->iStatus, secCodeType, codeInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported || res == KErrTimedOut)
-        {
-        res = KErrNone;
-        codeInfo.iRemainingEntryAttempts = KMaxNumberOfPINAttempts;
-        }
-#endif
-    User::LeaveIfError(res);
-
-    RDEBUG("codeInfo.iRemainingEntryAttempts",
-            codeInfo.iRemainingEntryAttempts);
-    if (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
-        codeInfo.iRemainingEntryAttempts = -1;
-
-    queryAccepted = KErrCancel;
-    CSecQueryUi *iSecQueryUi;
-    iSecQueryUi = CSecQueryUi::NewL();
-    TBuf<0x100> title;
-    title.Zero();
-    HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_upin_code"));
-    title.Append(stringHolder->Des());
-    CleanupStack::PopAndDestroy(stringHolder);
-    title.Append(_L("$"));
-    title.AppendNum(codeInfo.iRemainingEntryAttempts);
-    queryAccepted = iSecQueryUi->SecQueryDialog(title, oldPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-            | ESecUiEmergencyNotSupported | secCodeType);
-    RDEBUG("oldPassword", 0);
-    RDEBUGSTR(oldPassword);
-    RDEBUG("queryAccepted", queryAccepted);
-    delete iSecQueryUi;
-    if (queryAccepted != KErrNone)
-        return KErrAbort;
-    res = KErrNone; // indicate that everything is ok
-
-        {
-        queryAccepted = KErrCancel;
-        CSecQueryUi * iSecQueryUi;
-        iSecQueryUi = CSecQueryUi::NewL();
-        // this queries both, and verifies itself
-        TBuf<0x100> title;
-        title.Zero();
-
-        HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_upin_code"));
-        title.Append(stringHolder->Des());
-        CleanupStack::PopAndDestroy(stringHolder);
-        title.Append(_L("|"));
-        HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_retype_upin_code"));
-        title.Append(stringHolder2->Des());
-        CleanupStack::PopAndDestroy(stringHolder2);
-        queryAccepted = iSecQueryUi->SecQueryDialog(title, newPassword, SEC_C_PIN_CODE_MIN_LENGTH, SEC_C_PIN_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-                | ESecUiEmergencyNotSupported | secCodeType);
-        RDEBUG("newPassword", 0);
-        RDEBUGSTR(newPassword);
-        RDEBUG("queryAccepted", queryAccepted);
-        delete iSecQueryUi;
-        if (queryAccepted != KErrNone)
-            return KErrAbort;
-        }
-    // send code
-    passwords.iOldPassword = oldPassword;
-    passwords.iNewPassword = newPassword;
-    iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
-    RDEBUG("ChangeSecurityCode", 0);
-    iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported)
-        res = KErrNone;
-#endif
-    switch (res)
-        {
-        case KErrNone:
-            {
-            // code changed 
-            ShowResultNoteL(R_UPIN_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
-            break;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            // code was entered erroneously
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            ChangeUPinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            return KErrLocked;
-            }
-        case KErrGsm0707OperationNotAllowed:
-            {
-            // not allowed with this sim
-            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-            return KErrGsm0707OperationNotAllowed;
-            }
-        case KErrAbort:
-            {
-            break;
-            }
-        default:
-            {
-            ShowErrorNoteL(res);
-            ChangeUPinParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        }
-    return res;
-    }
-/***************************************/
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangePin2ParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption,
-        TInt aShowError)
-    {
-    RDEBUG("aFlags", aFlags);
-    // the password parameters are not used
-    if (aOldPassword.Length() > 0)
-        RDEBUGSTR(aOldPassword);
-    if (aNewPassword.Length() > 0)
-        RDEBUGSTR(aNewPassword);
-
-    if (aCaption.Length() > 0)
-        RDEBUGSTR(aCaption);
-
-    TInt simState;
-    TInt err(KErrGeneral);
-    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-    User::LeaveIfError(err);
-    TBool simRemoved(simState == ESimNotPresent);
-
-    if (simRemoved)
-        {
-        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-
-    RMmCustomAPI::TSecurityCodeType secCodeType;
-    RMobilePhone::TMobilePhoneSecurityCode EtelsecCodeType;
-    secCodeType = RMmCustomAPI::ESecurityCodePin2;
-    RMobilePhone::TMobilePassword oldPassword;
-    RMobilePhone::TMobilePassword newPassword;
-    RMobilePhone::TMobilePassword verifcationPassword;
-    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
-    RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-    TInt queryAccepted = KErrCancel;
-
-    // check if pin2 is blocked...
-    TBool isBlocked = EFalse;
-
-    TInt ret = iCustomPhone.IsBlocked(secCodeType, isBlocked);
-    RDEBUG("isBlocked", isBlocked);
-    if (isBlocked)
-        return KErrAccessDenied;
-    RDEBUG("ret", ret);
-#ifdef __WINS__
-    if (ret == KErrNotSupported)
-        ret = KErrNone;
-#endif
-
-    if (ret != KErrNone)
-        {
-        switch (ret)
-            {
-            // PIN2 Blocked.
-            case KErrGsm0707SIMPuk2Required:
-                break;
-            case KErrGsmSSPasswordAttemptsViolation:
-            case KErrLocked:
-                // Pin2 features blocked permanently!
-                ShowResultNoteL(R_PIN2_REJECTED, CAknNoteDialog::EConfirmationTone);
-                break;
-            case KErrGsm0707SimNotInserted:
-                // not allowed with this sim
-                ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-                break;
-            default:
-                ShowErrorNoteL(ret);
-                break;
-            }
-        return KErrAccessDenied;
-        }
-
-    // Security code must be changed to Etel API format
-    // Custom API Pin1 and Pin2 have the same enum values as the Etel ones
-    EtelsecCodeType = (RMobilePhone::TMobilePhoneSecurityCode) secCodeType;
-    iWait->SetRequestType(EMobilePhoneGetSecurityCodeInfo);
-    RDEBUG("GetSecurityCodeInfo", 0);
-    iPhone.GetSecurityCodeInfo(iWait->iStatus, EtelsecCodeType, codeInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    ret = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL ret", ret);
-#ifdef __WINS__
-    if (ret == KErrNotSupported || ret == KErrTimedOut)
-        {
-        codeInfo.iRemainingEntryAttempts = 1;
-        ret = KErrNone;
-        }
-#endif
-    User::LeaveIfError(ret);
-
-    RDEBUG("codeInfo.iRemainingEntryAttempts",
-            codeInfo.iRemainingEntryAttempts);
-    if (codeInfo.iRemainingEntryAttempts == KMaxNumberOfPINAttempts)
-        codeInfo.iRemainingEntryAttempts = -1;
-
-    /* request PIN using QT */
-    queryAccepted = KErrCancel;
-    CSecQueryUi *iSecQueryUi;
-    iSecQueryUi = CSecQueryUi::NewL();
-    TBuf<0x100> title;
-    title.Zero();
-    HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_pin2_code"));
-    title.Append(stringHolder->Des());
-    CleanupStack::PopAndDestroy(stringHolder);
-    title.Append(_L("$"));
-    title.AppendNum(codeInfo.iRemainingEntryAttempts);
-    queryAccepted = iSecQueryUi->SecQueryDialog(title, oldPassword, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-            | ESecUiEmergencyNotSupported | secCodeType);
-    RDEBUG("oldPassword", 0);
-    RDEBUGSTR(oldPassword);
-    RDEBUG("queryAccepted", queryAccepted);
-    delete iSecQueryUi;
-    if (queryAccepted != KErrNone)
-        return KErrAbort;
-    /* end request PIN using QT */
-
-    /* request PIN using QT */
-        {
-        queryAccepted = KErrCancel;
-        CSecQueryUi * iSecQueryUi;
-        iSecQueryUi = CSecQueryUi::NewL();
-        // this queries both, and verifies itself
-        TBuf<0x100> title;
-        title.Zero();
-        HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_pin2_code"));
-        title.Append(stringHolder->Des());
-        CleanupStack::PopAndDestroy(stringHolder);
-        title.Append(_L("|"));
-        HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("Verify"));
-        title.Append(stringHolder2->Des());
-        CleanupStack::PopAndDestroy(stringHolder2);
-        queryAccepted = iSecQueryUi->SecQueryDialog(title, newPassword, SEC_C_PIN2_CODE_MIN_LENGTH, SEC_C_PIN2_CODE_MAX_LENGTH, ESecUiAlphaNotSupported | ESecUiCancelSupported
-                | ESecUiEmergencyNotSupported | secCodeType);
-        RDEBUG("newPassword", 0);
-        RDEBUGSTR(newPassword);
-        RDEBUG("queryAccepted", queryAccepted);
-        delete iSecQueryUi;
-        if (queryAccepted != KErrNone)
-            return KErrAbort;
-        }
-    /* end request PIN using QT */
-
-    passwords.iOldPassword = oldPassword;
-    passwords.iNewPassword = newPassword;
-    iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
-    RDEBUG("ChangeSecurityCode", 0);
-    iPhone.ChangeSecurityCode(iWait->iStatus, EtelsecCodeType, passwords);
-    RDEBUG("WaitForRequestL", 0);
-    TInt res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported)
-        res = KErrNone;
-#endif
-    switch (res)
-        {
-        case KErrNone:
-            {
-            // code changed 
-            ShowResultNoteL(R_PIN2_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
-            break;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            ChangePin2ParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            // Pin2 blocked!
-            ShowResultNoteL(KErrLocked, CAknNoteDialog::EErrorTone);
-            CSecurityHandler* handler = new (ELeave) CSecurityHandler(iPhone);
-            CleanupStack::PushL(handler);
-            handler->HandleEventL(RMobilePhone::EPuk2Required);
-            CleanupStack::PopAndDestroy(handler); // handler    
-            return KErrLocked;
-            }
-        case KErrGsm0707OperationNotAllowed:
-            {
-            // not allowed with this sim
-            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-            return KErrGsm0707OperationNotAllowed;
-            }
-        case KErrAbort:
-            {
-            break;
-            }
-        default:
-            {
-            ShowErrorNoteL(res);
-            ChangePin2ParamsL(_L(""), _L(""), aFlags, aCaption, aShowError);
-            break;
-            }
-        }
-    return res;
-    }
-/************************************************/
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangeSecCodeParamsL(RMobilePhone::TMobilePassword aOldPassword, RMobilePhone::TMobilePassword aNewPassword, TInt aFlags, TDes& aCaption,
-        TInt aShowError)
-    {
-    RDEBUG("aFlags", aFlags);
-    RDEBUG("aShowError", aShowError);
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-    TInt res = KErrNone;
-    TInt queryAccepted = KErrCancel;
-    RMobilePhone::TMobilePassword newPassword;
-
-    RMobilePhone::TMobilePhoneSecurityCode secCodeType;
-    secCodeType = RMobilePhone::ESecurityCodePhonePassword;
-    RMobilePhone::TMobilePassword oldPassword;
-    RMobilePhone::TMobilePassword required_fourth;
-    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
-
-		// confirm that it can be changed now
-		{
-       RArray<TDevicelockPolicies> aFailedPolicies;
-       TDevicelockPolicies failedPolicy;
-       TInt retLockcode = KErrNone;
-       RSCPClient scpClient;
-       retLockcode = scpClient.Connect();
-       RDEBUG( "retLockcode", retLockcode );
-       if(retLockcode == KErrNone )
-       	{
-	       RDEBUG( "scpClient.VerifyNewLockcodeAgainstPolicies", 0 );
-	       retLockcode = scpClient.IsLockcodeChangeAllowedNow( aFailedPolicies );
-	       RDEBUG( "retLockcode", retLockcode );
-	       RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
-	       res = retLockcode;
-	       for(TInt i=0; i<aFailedPolicies.Count(); i++)
-		       {
-		       failedPolicy = aFailedPolicies[i];
-		       RDEBUG( "failedPolicy", failedPolicy );
-		       // it could also be res = KErrGsm0707IncorrectPassword;
-		       res = KErrTDevicelockPolicies + failedPolicy;
-		       }
-	     	 scpClient.Close();
-	     	 if(retLockcode!=KErrNone)
-	     	 		{
-	     	 		ShowResultNoteL(res, CAknNoteDialog::EErrorTone);
-     	 	 		return res;
-     	 	 		}
-				}
-			else
-				{
-					RDEBUG( "failed connecting to SCP", retLockcode );
-					// what to do? let's assume that we don't need special policies.
-				}
-		}
-
-    RDEBUG("aOldPassword.Length()", aOldPassword.Length());
-    if (aOldPassword.Length() == 0)
-        {
-        // aOldPassword was not given as a parameter
-        queryAccepted = KErrCancel;
-        CSecQueryUi *iSecQueryUi;
-        iSecQueryUi = CSecQueryUi::NewL();
-        TBuf<0x100> title;
-        title.Zero();
-        HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_sec_code"));
-        title.Append(stringHolder->Des());
-        CleanupStack::PopAndDestroy(stringHolder);
-        queryAccepted = iSecQueryUi->SecQueryDialog(title, oldPassword, SEC_C_SECURITY_CODE_MIN_LENGTH, SEC_C_SECURITY_CODE_MAX_LENGTH, ESecUiAlphaSupported
-                | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType);
-        RDEBUG("oldPassword", 0);
-        RDEBUGSTR(oldPassword);
-        RDEBUG("queryAccepted", queryAccepted);
-        delete iSecQueryUi;
-        if (queryAccepted != KErrNone)
-            return KErrAbort;
-        newPassword = _L("");
-        }
-    else
-        {
-        RDEBUG("parameter includes oldPassword", 1);
-        oldPassword.Copy(aOldPassword);
-        newPassword.Copy(aNewPassword);
-        }
-
-    // check current code before proceeding
-    RDEBUG("EMobilePhoneVerifySecurityCode", EMobilePhoneVerifySecurityCode);
-    iWait->SetRequestType(EMobilePhoneVerifySecurityCode);	// 0x59F1
-    RDEBUG("VerifySecurityCode", 0);
-    iPhone.VerifySecurityCode(iWait->iStatus, secCodeType, oldPassword, required_fourth);
-    RDEBUG("WaitForRequestL", 0);
-    res = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-    if (res == KErrNotSupported)
-        res = KErrNone;
-#endif
-
-    if (res != KErrNone)
-        {
-        ShowResultNoteL(res, CAknNoteDialog::EErrorTone);
-        return res;
-        }
-
-    while (newPassword.Length() == 0)
-        {
-        // codes do not match -> note -> ask new pin and verification codes again  
-        // note that this never happens because the dialog doesn't dismiss until both codes match
-        if (newPassword.Length() > 0)
-            ShowResultNoteL(R_CODES_DONT_MATCH, CAknNoteDialog::EErrorTone);
-
-            {
-            queryAccepted = KErrCancel;
-            CSecQueryUi *iSecQueryUi;
-            iSecQueryUi = CSecQueryUi::NewL();
-            // will ask both codes and compare itself
-            // mix, max , alpha is handled using TARM params, in the dialog itself
-            TInt lType = ESecUiAlphaSupported | ESecUiCancelSupported | ESecUiEmergencyNotSupported | secCodeType;
-            RDEBUG("lType", lType);
-            TBuf<0x100> title;
-            title.Zero();
-            HBufC* stringHolder = HbTextResolverSymbian::LoadLC(_L("txt_pin_code_dialog_new_sec_code"));
-            title.Append(stringHolder->Des());
-            CleanupStack::PopAndDestroy(stringHolder);
-            title.Append(_L("|"));
-            HBufC* stringHolder2 = HbTextResolverSymbian::LoadLC(_L("Verify"));
-            title.Append(stringHolder2->Des());
-            CleanupStack::PopAndDestroy(stringHolder2);
-            queryAccepted = iSecQueryUi->SecQueryDialog(title, newPassword, SEC_C_SECURITY_CODE_MIN_LENGTH, SEC_C_SECURITY_CODE_MAX_LENGTH, lType);
-            RDEBUG("newPassword", 0);
-            RDEBUGSTR(newPassword);
-            RDEBUG("queryAccepted", queryAccepted);
-            delete iSecQueryUi;
-            if (queryAccepted != KErrNone)
-                return KErrAbort;
-            }
-
-        } // while
-
-			 // Confirm that the new code is nice.
-			 // This is also done on every key-press in the dialog, but it doesn't harm to repeat.
-			 // In fact this is needed for the case when newPassword is provided.
-       RArray<TDevicelockPolicies> aFailedPolicies;
-       TDevicelockPolicies failedPolicy;
-       TInt retLockcode = KErrNone;
-       RSCPClient scpClient;
-       retLockcode = scpClient.Connect();
-       RDEBUG( "retLockcode", retLockcode );
-       if(retLockcode == KErrNone )
-       	{
-	       RDEBUG( "scpClient.VerifyNewLockcodeAgainstPolicies", 0 );
-	       retLockcode = scpClient.VerifyNewLockcodeAgainstPolicies( newPassword, aFailedPolicies );
-	       RDEBUG( "retLockcode", retLockcode );
-	       RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
-	       for(TInt i=0; i<aFailedPolicies.Count(); i++)
-		       {
-		       failedPolicy = aFailedPolicies[i];
-		       RDEBUG( "failedPolicy", failedPolicy );
-		       // it could also be res = KErrGsm0707IncorrectPassword;
-		       res = KErrTDevicelockPolicies + failedPolicy;
-		       }
-	     	 scpClient.Close();
-				}
-			else
-				{
-					RDEBUG( "failed connecting to SCP", retLockcode );
-					// what to do? let's assume that we don't need special policies.
-				}
-
-    // change code
-    RDEBUG("res", res);
-    if (res == KErrNone)
-        {
-        passwords.iOldPassword = oldPassword;
-        passwords.iNewPassword = newPassword;
-        iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
-        RDEBUG("ChangeSecurityCode", 0);
-        iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
-        RDEBUG("WaitForRequestL", 0);
-        res = iWait->WaitForRequestL();
-        RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-        if (res == KErrNotSupported)
-            res = KErrNone;
-#endif
-
-        if (res == KErrNone && 1 == 0) // TODO not possible to enable because it asks code again
-            {
-            RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
-            RMobilePhone::TMobilePhoneLockSetting lockChangeSetting = RMobilePhone::ELockSetEnabled;
-            iWait->SetRequestType(EMobilePhoneSetLockSetting);
-            RDEBUG("SetLockSetting", 0);
-            iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting);
-            RDEBUG("WaitForRequestL", 0);
-            res = iWait->WaitForRequestL();
-            RDEBUG("WaitForRequestL res", res);
-#ifdef __WINS__
-            if (res == KErrNotSupported || res == KErrTimedOut)
-                res = KErrNone;
-#endif
-            }
-        }
-
-    RDEBUG("res", res);
-    switch (res)
-        {
-        case KErrNone:
-            {
-            // code changed ... unless TARM rejects it
-                {
-                // Send the changed code to the SCP server, even with device lock enhancements.
-                RDEBUG("scpClient.Connect", 0);
-                RSCPClient scpClient;
-                TSCPSecCode newScpCode;
-                TSCPSecCode oldScpCode;
-                newScpCode.Copy(newPassword);
-                oldScpCode.Copy(oldPassword);
-                if (scpClient.Connect() == KErrNone)
-                    {
-                    RDEBUG("scpClient.StoreLockcode", 0);
-                    // this is the old method. Obsolete now
-                    // scpClient.StoreCode( newCode );
-                    RArray<TDevicelockPolicies> aFailedPolicies;
-                    TDevicelockPolicies failedPolicy;
-                    TInt retLockcode = KErrNone;
-                    retLockcode = scpClient.StoreLockcode(newScpCode, oldScpCode, aFailedPolicies);
-                    RDEBUG( "retLockcode", retLockcode );
-                    RDEBUG( "KErrAccessDenied", KErrAccessDenied );
-                    RDEBUG( "aFailedPolicies.Count()", aFailedPolicies.Count() );
-                    for (TInt i = 0; i < aFailedPolicies.Count(); i++)
-                        {
-                        failedPolicy = aFailedPolicies[i];
-                        RDEBUG( "failedPolicy", failedPolicy );
-                        }
-                    // Don't know what to do if TARM fails. Hopefully it was stopped at typing, as well as VerifyNewLockcodeAgainstPolicies
-                    // The code is already changed in iPhone !
-                    // For now, just undo the changed password
-                    if(retLockcode!=KErrNone)
-                    	{
-                    	RDEBUG("Undo password change because retLockcode", retLockcode);
-                    	ShowResultNoteL(retLockcode, CAknNoteDialog::EConfirmationTone);
-                    	
-                    	// go back to previous password.
-	           	        passwords.iOldPassword = newPassword;
-							        passwords.iNewPassword = oldPassword;
-							        iWait->SetRequestType(EMobilePhoneChangeSecurityCode);
-							        RDEBUG("ChangeSecurityCode", 0);
-							        iPhone.ChangeSecurityCode(iWait->iStatus, secCodeType, passwords);
-							        RDEBUG("WaitForRequestL", 0);
-							        res = iWait->WaitForRequestL();	// this can't fail. ISA is always allowing to undo the password change.
-							        RDEBUG("WaitForRequestL res", res);
-											#ifdef __WINS__
-							        if (res == KErrNotSupported)
-							            res = KErrNone;
-											#endif
-	                    res = retLockcode;
-	                    }
-                    scpClient.Close();
-                    }
-                if(res==KErrNone)
-                	{
-                	RDEBUG( "showing R_SECURITY_CODE_CHANGED_NOTE", R_SECURITY_CODE_CHANGED_NOTE );
-                	ShowResultNoteL(R_SECURITY_CODE_CHANGED_NOTE, CAknNoteDialog::EConfirmationTone);
-                	}
-                }
-            break;
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            ShowResultNoteL(R_SEC_BLOCKED, CAknNoteDialog::EErrorTone);
-            ChangeSecCodeParamsL(aOldPassword, aNewPassword, aFlags, aCaption, aShowError);
-            break;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            // code was entered erroneously
-            ShowResultNoteL(R_CODE_ERROR, CAknNoteDialog::EErrorTone);
-            ChangeSecCodeParamsL(aOldPassword, aNewPassword, aFlags, aCaption, aShowError);
-            break;
-            }
-        case KErrAbort:
-            {
-            break;
-            }
-        default:
-            {
-            ShowErrorNoteL(res);
-            ChangeSecCodeParamsL(aOldPassword, aNewPassword, aFlags, aCaption, aShowError);
-            break;
-            }
-        } // switch
-    RDEBUG("return res", res);
-    return res;
-    }
-
-/**************************************/
-// qtdone
-// the params are changed in the settings,. This only asks for password.
-EXPORT_C TInt CSecuritySettings::ChangeAutoLockPeriodParamsL(TInt aPeriod, RMobilePhone::TMobilePassword aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
-    {
-    RDEBUG("aPeriod", aPeriod);
-    RDEBUG("aFlags", aFlags);
-    /*****************************************************
-     *    Series 60 Customer / ETel
-     *    Series 60  ETel API
-     *****************************************************/
-
-    RMobilePhone::TMobilePhoneLockSetting lockChange(RMobilePhone::ELockSetDisabled);
-    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockPhoneDevice;
-    TInt oldPeriod = aPeriod;
-
-    TInt maxPeriod = 0;
-    if (FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw))
-        {
-        // Retrieve the current autolock period max. value from the SCP server, 
-        // and check that the value the user
-        // selected is ok from the Corporate Policy point of view.
-        RSCPClient scpClient;
-        TInt ret = scpClient.Connect();
-        if (ret == KErrNone)
-            {
-            CleanupClosePushL(scpClient);
-            TBuf<KSCPMaxIntLength> maxPeriodBuf;
-            if (scpClient.GetParamValue(ESCPMaxAutolockPeriod, maxPeriodBuf) == KErrNone)
-                {
-                TLex lex(maxPeriodBuf);
-                if ((lex.Val(maxPeriod) == KErrNone) && (maxPeriod > 0))
-                    {
-                    RDEBUG("from SCP maxPeriod", maxPeriod);
-                    }
-                else
-                    {
-                    maxPeriod = 0;
-                    RDEBUG("not from SCP maxPeriod", maxPeriod);
-                    }
-                }
-            else
-                {
-                RDEBUG("Failed to retrieve max period", maxPeriod);
-                }
-            }
-        else
-            {
-            RDEBUG("Failed to connect to SCP", 0);
-            }
-        CleanupStack::PopAndDestroy(); // scpClient 
-        }
-    RDEBUG("maxPeriod", maxPeriod);
-    if (FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw))
-        {
-        TBool allow = ETrue;
-
-        if ((aPeriod == 0) && (maxPeriod > 0))
-            {
-            RDEBUG("The period is not allowed by TARM", aPeriod);
-            RDEBUG( "maxPeriod", maxPeriod );
-            allow = EFalse;
-            ShowResultNoteL(R_SECUI_TEXT_AUTOLOCK_MUST_BE_ACTIVE, CAknNoteDialog::EErrorTone);
-            }
-        if (!allow)
-            {
-            return ChangeAutoLockPeriodParamsL(aPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
-            }
-        }
-
-    if (aPeriod == 0)
-        {
-        // If remote lock is enabled, don't disable the domestic OS device lock
-        // since that would render the RemoteLock useless.
-        // Instead just re-set the DOS lock to enabled which as a side effect
-        // requests the security code from the user.
-
-        TBool remoteLockStatus(EFalse);
-        CRemoteLockSettings* remoteLockSettings = CRemoteLockSettings::NewL();
-
-        if (remoteLockSettings->GetEnabled(remoteLockStatus))
-            {
-            if (remoteLockStatus)
-                {
-                // Remote lock is enabled
-                lockChange = RMobilePhone::ELockSetEnabled;
-                RDEBUG( "RemoteLock is enabled lockChange", lockChange );
-                }
-            else
-                {
-                // Remote lock is disabled
-                lockChange = RMobilePhone::ELockSetDisabled;
-                RDEBUG( "RemoteLock is disabled lockChange", lockChange );
-                }
-            }
-        else
-            {
-            // Failed to get remote lock status
-            RDEBUG( "Failed to get remote lock status lockChange", lockChange );
-            }
-
-        delete remoteLockSettings;
-        remoteLockSettings = NULL;
-
-        }
-    else
-        {
-        lockChange = RMobilePhone::ELockSetEnabled;
-        RDEBUG("aPeriod != 0 lockChange", lockChange);
-        }
-
-    iWait->SetRequestType(EMobilePhoneSetLockSetting);
-    RDEBUG("lockChange", lockChange);
-    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-    RDEBUG("SetLockSetting", 0);
-    iPhone.SetLockSetting(iWait->iStatus, lockType, lockChange); // this eventually calls PassPhraseRequiredL
-    RDEBUG("WaitForRequestL", 0);
-    TInt status = KErrNone;
-    status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        status = KErrNone;
-#endif
-    switch (status)
-        {
-        case KErrNone:
-            break;
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            RDEBUG("KErrLocked", KErrLocked)
-            ;
-            ShowResultNoteL(KErrLocked, CAknNoteDialog::EErrorTone); // the old code didn't show messages
-            return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            RDEBUG("KErrAccessDenied", KErrAccessDenied)
-            ;
-            // code was entered erroneously
-            ShowResultNoteL(KErrAccessDenied, CAknNoteDialog::EErrorTone); // the old code didn't show messages
-            return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
-        case KErrAbort:
-            // User pressed "cancel" in the code query dialog.
-            return oldPeriod;
-        default:
-            RDEBUG("default", status)
-            ;
-            ShowResultNoteL(status, CAknNoteDialog::EErrorTone); // the old code didn't show messages
-            return ChangeAutoLockPeriodParamsL(oldPeriod, aOldPassword, aFlags, aCaption, aShowError); // ask again
-        }
-    RDEBUG("aPeriod", aPeriod);
-    return aPeriod;
-    }
-/*****************************/
-// qtdone
-EXPORT_C TInt CSecuritySettings::ChangePinRequestParamsL(TInt aEnable, RMobilePhone::TMobilePassword aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
-    {
-    RDEBUG("aEnable", aEnable);
-    RDEBUG("aFlags", aFlags);
-    TInt simState = 0;
-    TInt lEnable = aEnable;
-    TInt err(KErrGeneral);
-    err = RProperty::Get(KPSUidStartup, KPSSimStatus, simState);
-    User::LeaveIfError(err);
-    TBool simRemoved(simState == ESimNotPresent);
-
-    if (simRemoved)
-        {
-        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-        return KErrAccessDenied;
-        }
-
-    RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-    RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
-    RMobilePhone::TMobilePhoneLock lockType = RMobilePhone::ELockICC;
-
-    RMobilePhone::TMobilePhoneLockSetting lockChangeSetting;
-
-    //get lock info
-    iWait->SetRequestType(EMobilePhoneGetLockInfo);
-    iPhone.GetLockInfo(iWait->iStatus, lockType, lockInfoPkg);
-    RDEBUG("WaitForRequestL", 0);
-    TInt status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        {
-        lockInfo.iSetting = RMobilePhone::ELockSetDisabled;
-        status = KErrNone;
-        }
-#endif
-    User::LeaveIfError(status);
-
-    if (aOldPassword.Length() == 0) // only if input parameters are empty
-        {
-        // switch the value.
-        if (lockInfo.iSetting == RMobilePhone::ELockSetDisabled)
-            lEnable = 1; // on
-        else
-            lEnable = 0; // off
-        }
-
-    RDEBUG("lEnable", lEnable);
-    if (lEnable == 0)
-        {
-        lockChangeSetting = RMobilePhone::ELockSetDisabled;
-        }
-    else
-        {
-        lockChangeSetting = RMobilePhone::ELockSetEnabled;
-        }
-
-    RDEBUG("lockChangeSetting", lockChangeSetting);
-    // Raise a flag to indicate that the PIN
-    // request coming from ETEL has originated from SecUi and not from Engine.
-    TInt tRet = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginated);
-    RDEBUG("tRet", tRet);
-
-    // Change the lock setting
-    iWait->SetRequestType(EMobilePhoneSetLockSetting);
-    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsQueryRequestCancel, ESecurityUIsQueryRequestOk);
-    RDEBUG("SetLockSetting", 0);
-    iPhone.SetLockSetting(iWait->iStatus, lockType, lockChangeSetting); // this will trigger Pin1RequiredL
-    RDEBUG("WaitForRequestL", 0);
-    status = iWait->WaitForRequestL();
-    RDEBUG("WaitForRequestL status", status);
-#ifdef __WINS__
-    if (status == KErrNotSupported || status == KErrTimedOut)
-        status = KErrNone;
-#endif
-
-    // Lower the flag                             
-    RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery, ESecurityUIsSecUIOriginatedUninitialized);
-
-    switch (status)
-        {
-        case KErrNone:
-            {
-            break;
-            }
-        case KErrGsm0707OperationNotAllowed:
-            {
-            // not allowed with this sim
-            ShowResultNoteL(R_OPERATION_NOT_ALLOWED, CAknNoteDialog::EErrorTone);
-            return KErrGsm0707OperationNotAllowed;
-            }
-        case KErrGsm0707IncorrectPassword:
-        case KErrAccessDenied:
-            {
-            // code was entered erroneously
-            return ChangePinRequestParamsL(aEnable, aOldPassword, aFlags, aCaption, aShowError);
-            }
-        case KErrGsmSSPasswordAttemptsViolation:
-        case KErrLocked:
-            {
-            return KErrLocked;
-            }
-        case KErrAbort:
-            {
-            return KErrAbort;
-            }
-        default:
-            {
-            return ChangePinRequestParamsL(aEnable, aOldPassword, aFlags, aCaption, aShowError);
-            }
-        }
-    return KErrNone;
-    }
-
+        return EFalse;
+}
 //
 // ----------------------------------------------------------
-// CSecuritySettings::AskSecCodeParamsL()
-// For asking security code e.g in settings
-// not used
+// CSecuritySettings::GetActivePinCode()
+// Return the code active in current application (PIN/UPIN)
 // ----------------------------------------------------------
-// qtdone
-EXPORT_C TBool CSecuritySettings::AskSecCodeParamsL(RMobilePhone::TMobilePassword &aOldPassword, TInt aFlags, TDes& aCaption, TInt aShowError)
-    {
-    RDEBUG("aFlags", aFlags);
-    RDEBUG("aShowError", aShowError);
-    RDEBUG("This doesn't do anything", 0);
-    RDEBUG("aFlags", aFlags);
-
-    // the password parameters are not used
-    if (aOldPassword.Length() > 0)
-        RDEBUGSTR(aOldPassword);
-
-    return EFalse;
-    }
+//
+EXPORT_C TBool CSecuritySettings::IsUpinActive()
+{
+    TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma ));
+    TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin ));
+    if(wcdmaSupported || upinSupported)
+      {
+        #ifdef __WINS__
+        return EFalse;
+        #else//__WINS__
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() BEGIN"));
+        #endif
+    	RMobilePhone::TMobilePhoneSecurityCode activePin;
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() GetActivePin"));
+        #endif
+        iCustomPhone.GetActivePin(activePin);
+        #if defined(_DEBUG)
+        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive() GetActivePin DONE"));
+        #endif
+    	if(activePin == RMobilePhone::ESecurityUniversalPin)
+        {
+            #if defined(_DEBUG)
+            RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): UPIN ACTIVE"));
+            #endif
+    		return ETrue;
+        }
+         #if defined(_DEBUG)
+         RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): UPIN NOT ACTIVE"));
+         #endif
+         #if defined(_DEBUG)
+         RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinActive(): END"));
+         #endif
+    	return EFalse;
+        #endif //__WINS__
+      }
+    else
+        return EFalse;
+}
 
 // End of file