securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp
branchRCL_3
changeset 49 09b1ac925e3f
parent 46 94b923fa11ed
child 50 03674e5abf46
--- a/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Thu Aug 19 10:45:23 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecUiSecuritySettings.cpp	Tue Aug 31 16:04:40 2010 +0300
@@ -1,26 +1,24 @@
 /*
-* 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> 
@@ -31,39 +29,42 @@
 #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"
-
-#ifdef RD_REMOTELOCK
+#include <hb/hbcore/hbtextresolversymbian.h>
 #include <aknnotewrappers.h>
 #include <StringLoader.h>
 #include <RemoteLockSettings.h>
-#include "SecUiRemoteLockSettingPage.h"
-#endif // RD_REMOTELOCK
 #include <featmgr.h>
-    /*****************************************************
-    *    Series 60 Customer / TSY
-    *    Needs customer TSY implementation
-    *****************************************************/
+
+#include "SecQueryUi.h"
+#include <hb/hbwidgets/hbdevicemessageboxsymbian.h>
+
+/*****************************************************
+ *    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);
-const TInt KLastRemainingInputAttempt(1);
+const TInt KMaxNumberOfPINAttempts(3); // is this valid also for PIN2 ?
+
+#define ESecUiTypeLock                  0x00100000
+#define KErrTDevicelockPolicies					0x10207837
 
 // ================= MEMBER FUNCTIONS =======================
 //
 // ----------------------------------------------------------
 // CSecuritySettings::NewL()
 // ----------------------------------------------------------
-//
+// qtdone
 EXPORT_C CSecuritySettings* CSecuritySettings::NewL()
     {
     CSecuritySettings* self = new (ELeave) CSecuritySettings();
@@ -77,7 +78,7 @@
 // CSecuritySettings::CSecuritySettings()
 // constructor
 // ----------------------------------------------------------
-//
+// qtdone
 EXPORT_C CSecuritySettings::CSecuritySettings()
     {
     }
@@ -86,91 +87,93 @@
 // 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
+     *****************************************************/
 
-    TInt err( KErrGeneral );
-    TInt thisTry( 0 );
+    RDEBUG("0", 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 */
-    #if defined(_DEBUG)
-    RDebug::Print(_L("(SECUI)CSecuritySettings::ConstructL()"));
-    #endif
-    
+     fails on connections are possible, at least on some servers */
+
     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 );
+    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);
+
     }
 //
 // ----------------------------------------------------------
 // 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())
-    {
-        #if defined(_DEBUG)
-	    RDebug::Print(_L("(SECUI)CManualSecuritySettings::~CSecuritySettings() CANCEL REQ"));
-	    #endif
+    if (iWait->IsActive())
+        {
+        RDEBUG("CancelAsyncRequest", 0);
         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();
@@ -191,173 +194,21 @@
 // CSecuritySettings::ChangePinL()
 // Changes PIN1
 // ----------------------------------------------------------
-//
+// qtdone
 EXPORT_C void CSecuritySettings::ChangePinL()
     {
-    /*****************************************************
-    *    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);
+    RDEBUG("0", 0);
+    RMobilePhone::TMobilePassword iOldPassword;
+    RMobilePhone::TMobilePassword iNewPassword;
+    TInt iFlags = ESecUiTypeLock;
+    iOldPassword.Copy(_L(""));
+    iNewPassword.Copy(_L(""));
 
-    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;
-            }
-        }
-
+    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);
     }
 
 //
@@ -365,174 +216,21 @@
 // CSecuritySettings::ChangeUPinL()
 // Changes Universal PIN
 // ----------------------------------------------------------
-//
+// qtdone
 EXPORT_C void CSecuritySettings::ChangeUPinL()
     {
-    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;
-                }
-            }
-      }
+    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);
 
     }
 
@@ -541,48 +239,873 @@
 // 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);
+    }
 //
-EXPORT_C void CSecuritySettings::ChangePin2L()
+// ----------------------------------------------------------
+// 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
+
+        // 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)
+        {
+        // 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
-    *****************************************************/
-    #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);
+     *    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 ( simRemoved )
+    if (currentItem == 0) // switch the flag
+        {
+        lockChangeSetting = RMobilePhone::ELockSetDisabled;
+        }
+    else
         {
-        ShowResultNoteL(R_INSERT_SIM, CAknNoteDialog::EErrorTone);
-        return;
+        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();
+            }
         }
 
-    RMmCustomAPI::TSecurityCodeType secCodeType;
-    RMobilePhone::TMobilePhoneSecurityCode EtelsecCodeType;
-    secCodeType = RMmCustomAPI::ESecurityCodePin2;
-    RMobilePhone::TMobilePassword oldPassword;
-    RMobilePhone::TMobilePassword newPassword;
-    RMobilePhone::TMobilePassword verifcationPassword;
-    RMobilePhone::TMobilePhonePasswordChangeV1 passwords;
+    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);
     RMobilePhone::TMobilePhoneSecurityCodeInfoV5 codeInfo;
     RMobilePhone::TMobilePhoneSecurityCodeInfoV5Pckg codeInfoPkg(codeInfo);
-    
-    // check if pin2 is blocked...
+    RMobilePhone::TMobilePassword password;
     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;
 
-    TInt ret = iCustomPhone.IsBlocked(secCodeType,isBlocked);
-    
-    if(isBlocked)
+    // 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)
         return;
-    
+
     if (ret != KErrNone)
-        {    
+        {
         switch (ret)
             {
             // PIN2 Blocked.
@@ -603,1785 +1126,39 @@
             }
         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;
         }
-        
-      // Change the FDN setting
+    RDEBUG("fdnSet", fdnSet);
+    // 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
 
-    #if defined(_DEBUG)
-    RDebug::Print( _L("(SECUI)CSecuritySettings::SetFdnModeL(): RETURN CODE: %d"), status);
-    #endif
-    switch(status)
-        {        
+    RDEBUG("status", status);
+    switch (status)
+        {
         case KErrNone:
             break;
         case KErrGsm0707IncorrectPassword:
@@ -2401,23 +1178,21 @@
         default:
             ShowErrorNoteL(status);
             break;
-        }    
-  }
+        }
+    }
 //
 // ----------------------------------------------------------
 // CSecuritySettings::GetFndMode()
 // Retrieves the current Fixed Dialling Numbers mode
 // ----------------------------------------------------------
-//
-EXPORT_C TInt CSecuritySettings::GetFdnMode (RMobilePhone::TMobilePhoneFdnStatus& aFdnMode)
+// qtdone
+EXPORT_C TInt CSecuritySettings::GetFdnMode(RMobilePhone::TMobilePhoneFdnStatus& aFdnMode)
     {
     /*****************************************************
-    *    Series 60 Customer / ETel
-    *    Series 60  ETel API
-    *****************************************************/
-    #if defined(_DEBUG)
-    RDebug::Print(_L("(SECUI)CSecuritySettings::GetFdnMode()"));
-    #endif
+     *    Series 60 Customer / ETel
+     *    Series 60  ETel API
+     *****************************************************/
+    RDEBUG("0", 0);
     return iPhone.GetFdnStatus(aFdnMode);
     }
 
@@ -2426,24 +1201,12 @@
 // CSecuritySettings::ShowErrorNoteL()
 // Shows error note
 // ----------------------------------------------------------
-//
+// qtdone
 void CSecuritySettings::ShowErrorNoteL(TInt aError)
     {
-    #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    
+    RDEBUG("aError", aError);
+
+    ShowResultNoteL(aError, CAknNoteDialog::EErrorTone);
     }
 
 //
@@ -2451,17 +1214,258 @@
 // CSecuritySettings::ShowResultNoteL()
 // Shows result note
 // ----------------------------------------------------------
-//
+// qtdone
 void CSecuritySettings::ShowResultNoteL(TInt aResourceID, CAknNoteDialog::TTone aTone)
-    {  
-    #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);
+    {
+    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
+
     }
 
 //
@@ -2469,139 +1473,1316 @@
 // CSecuritySettings::IsUpinSupportedL()
 // Return is UPIN supported
 // ----------------------------------------------------------
-//
+// qtdone
 EXPORT_C TBool CSecuritySettings::IsUpinSupportedL()
-{
-    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
-    
+    {
+    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
+    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
+    TBool isSupported = EFalse;
+    RDEBUG("wcdmaSupported", wcdmaSupported);
+    RDEBUG("upinSupported", upinSupported);
+    if (wcdmaSupported || upinSupported)
+        {
         RMobilePhone::TMobilePhoneLockInfoV1 lockInfo;
-        
+
         //get lock info
         RMobilePhone::TMobilePhoneLockInfoV1Pckg lockInfoPkg(lockInfo);
         iWait->SetRequestType(EMobilePhoneGetLockInfo);
-        #if defined(_DEBUG)
-        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo"));
-        #endif
+        RDEBUG("GetLockInfo", 0);
         iPhone.GetLockInfo(iWait->iStatus, RMobilePhone::ELockUniversalPin, lockInfoPkg);
+        RDEBUG("WaitForRequestL", 0);
         TInt res = iWait->WaitForRequestL();
-        #if defined(_DEBUG)
-        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported() GetLockInfo DONE"));
-        #endif
+        RDEBUG("WaitForRequestL res", res);
         if ((res == KErrNotSupported) || (res == KErrGsmInvalidParameter))
-        {
-            #if defined(_DEBUG)
-            RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinSupported(): NOT SUPPORTED"));
-            #endif
-            return EFalse;
+            {
+            RDEBUG("0", 0);
+            isSupported = EFalse;
+            }
+        else
+            {
+            RDEBUG("1", 1);
+            isSupported = ETrue;
+            }
         }
-        #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;
-}
+        isSupported = EFalse;
+    RDEBUG("isSupported", isSupported);
+    return isSupported;
+    }
 //
 // ----------------------------------------------------------
-// CSecuritySettings::IsCodeBlocked()
+// 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)
-      {
-    #ifdef __WINS__
-        return EFalse;
-    #else//__WINS__
-        #if defined(_DEBUG)
-        RDebug::Print(_L("(SECUI)CSecuritySettings::IsUpinBlocked() BEGIN"));
-        #endif
-    	RMmCustomAPI::TSecurityCodeType secCodeType;
+    {
+    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
+    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
+    if (wcdmaSupported || upinSupported)
+        {
+        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
+        RDEBUG("IsBlocked", 0);
+        TInt ret = iCustomPhone.IsBlocked(secCodeType, isBlocked);
+        RDEBUG("ret", ret);
+        RDEBUG("isBlocked", isBlocked);
         return isBlocked;
-    #endif //__WINS__
-      }
+        }
     else
         return EFalse;
-}
+    }
 //
 // ----------------------------------------------------------
-// CSecuritySettings::GetActivePinCode()
+// 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)
-      {
-        #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
+    {
+    TBool wcdmaSupported(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma));
+    TBool upinSupported(FeatureManager::FeatureSupported(KFeatureIdUpin));
+    if (wcdmaSupported || upinSupported)
+        {
+        RMobilePhone::TMobilePhoneSecurityCode activePin;
+        RDEBUG("GetActivePin", 0);
         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;
+        RDEBUG("activePin", activePin);
+        RDEBUG("RMobilePhone::ESecurityUniversalPin",
+                RMobilePhone::ESecurityUniversalPin);
+        if (activePin == RMobilePhone::ESecurityUniversalPin)
+            {
+            return ETrue;
+            }
+        return EFalse;
         }
-         #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;
-}
+    }
+
+/**************************/
+// 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("");
+        }
+    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;
+    }
+
+//
+// ----------------------------------------------------------
+// CSecuritySettings::AskSecCodeParamsL()
+// For asking security code e.g in settings
+// not used
+// ----------------------------------------------------------
+// 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;
+    }
 
 // End of file