--- 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**,¬eDlg ) );
- 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**,¬eDlg));
- 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**,¬eDlg));
- 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