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