diff -r 09b1ac925e3f -r 03674e5abf46 securitydialogs/SecUi/GSSimSecPlugin/Src/GSSimSecPluginContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/securitydialogs/SecUi/GSSimSecPlugin/Src/GSSimSecPluginContainer.cpp Wed Sep 01 12:19:59 2010 +0100 @@ -0,0 +1,943 @@ +/* +* Copyright (c) 2005 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: Container for the Device & SIM security sub-folder +* +*/ + + +#include "GSSimSecPluginContainer.h" +#include "GSSimSecPluginModel.h" +#include "GSSimSecPlugin.hrh" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifdef RD_REMOTELOCK +#include +_LIT( KRemoteLockEmptyItem, " " ); +#endif + +#include +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS +_LIT( CodeItem,"****" ); +_LIT( SecurityCodeItem, "*****" ); + +const TInt KMaxStringLength = 50; + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS ============================== + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::ConstructL() +// +// Symbian OS two phased constructor +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::ConstructL( const TRect& aRect ) + { + iListBox = new( ELeave ) CAknSettingStyleListBox; + BaseConstructL( aRect, R_GS_SIM_SECURITY_VIEW_TITLE, R_SIM_SECURITY_LBX ); + FeatureManager::InitializeLibL(); + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::~CGSSettListSecurityContainer() +// +// Destructor +// --------------------------------------------------------------------------- +// + +CGSSimSecPluginContainer::~CGSSimSecPluginContainer() + { + if(iCodeItems) + delete iCodeItems; + if(iUpinItems) + delete iUpinItems; + if(iAutoLockItems) + delete iAutoLockItems; + if(iPinItems) + delete iPinItems; + if(iSecurityItems) + delete iSecurityItems; + if(iSatItems) + delete iSatItems; + if(iSecurity) + delete iSecurity; + if(iListboxItemArray) + delete iListboxItemArray; +#ifdef RD_REMOTELOCK + if(iRemoteLockItems) + delete iRemoteLockItems; +#endif // RD_REMOTELOCK +FeatureManager::UnInitializeLib(); + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::CGSSimSecPluginContainer() +// +// Constructor +// --------------------------------------------------------------------------- +// +CGSSimSecPluginContainer::CGSSimSecPluginContainer( + CGSSimSecPluginModel* aModel ) + : iModel ( aModel ) + { + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::ConstructListBoxL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::ConstructListBoxL( TInt aResLbxId ) + { + iSecurity= CSecuritySettings::NewL(); + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + if(wcdmaSupported || upinSupported) + { + //check if UPIN code is supported and not rejected + TBool resp = iSecurity->IsUpinSupportedL(); + if( resp ) + { + iUpinCodeSupported = ETrue; + + //check if UPIN code is active + if( iSecurity->IsUpinActive() ) + { + iUpinCodeActive = ETrue; + } + else + { + iUpinCodeActive = EFalse; + } + + //Check whether UPIN is blocked + resp = iSecurity->IsUpinBlocked(); + + if( !resp ) + { + iUpinCodeRejected = EFalse; + } + else + { + iUpinCodeRejected = ETrue; + } + } + else + { + iUpinCodeSupported = EFalse; + iUpinCodeActive = EFalse; + } + } + + + iListBox->ConstructL( this, EAknListBoxSelectionList ); + iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId, + *iListBox, *iCoeEnv ); + iListBox->Model()->SetItemTextArray( iListboxItemArray ); + iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + iAutoLockItems = iCoeEnv->ReadDesC16ArrayResourceL( R_AUTOLOCK_ARRAY ); + +#ifdef RD_REMOTELOCK + #ifdef _DEBUG + RDebug::Print( _L( "(GS)CGSSettListSimSecurityContainer::ConstructListBoxL() - Reading R_REMOTELOCK_ARRAY resource" ) ); + #endif // DEBUG + + iRemoteLockItems = iCoeEnv->ReadDesC16ArrayResourceL( R_REMOTELOCK_ARRAY ); +#endif // RD_REMOTELOCK + + + if(wcdmaSupported || upinSupported) + { + iUpinItems = iCoeEnv->ReadDesC16ArrayResourceL( R_UPIN_ARRAY ); + iCodeItems = iCoeEnv->ReadDesC16ArrayResourceL( R_CODE_ARRAY ); + } + else + { + iUpinItems = NULL; + iCodeItems = NULL; + } + + iPinItems = iCoeEnv->ReadDesC16ArrayResourceL( R_PIN_ARRAY ); + iSecurityItems = iCoeEnv->ReadDesC16ArrayResourceL( R_SECURITY_ARRAY ); + iSatItems = iCoeEnv->ReadDesC16ArrayResourceL( R_SAT_ARRAY ); + + CreateListBoxItemsL(); + } + + +// --------------------------------------------------------------------------- +// CGSSettListIdleContainer::CreateListBoxItemsL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::CreateListBoxItemsL() + { + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + + if(wcdmaSupported || upinSupported) + { + if( iUpinCodeSupported && !iUpinCodeRejected ) + { + MakeCodeInUseItemL(); + } + + if( iUpinCodeActive ) + { + MakeUpinRequestItemL(); + MakeCodeItemL( EGSSettIdUpinCode ); + } + else + { + MakePinRequestItemL(); + MakeCodeItemL( EGSSettIdPinCode ); + } + } + else //not wcdma or upin + { + MakePinRequestItemL(); + MakeCodeItemL( EGSSettIdPinCode ); + } + + MakeCodeItemL( EGSSettIdPin2Code ); + MakeAutolockItemL(); + +#ifdef RD_REMOTELOCK + MakeRemoteLockItemL(); +#endif // RD_REMOTELOCK + + MakeCodeItemL( EGSSettIdSecurityCode ); + MakeSimChangeItemL(); + if(!FeatureManager::FeatureSupported( KFeatureIdFfNoCugSupport )) + { + #ifdef _DEBUG + RDebug::Print( _L( "(GS)CGSSettListSimSecurityContainer::CreateListBoxItemsL() CUG supported!" ) ); + #endif // DEBUG + MakeClosedUserGroupItemL(); + } + else + { + #ifdef _DEBUG + RDebug::Print( _L( "(GS)CGSSettListSimSecurityContainer::CreateListBoxItemsL() CUG Not supported!" ) ); + #endif // DEBUG + } + + TInt support = iModel->ConfirmSatOperationsSupport(); + + if ( support == 1 ) // Confirmation allowed. + { + MakeSatOperationsItemL(); + } + } + +// --------------------------------------------------------------------------- +// CGSSettListIdleContainer::UpdateListBoxL( TInt aFeatureId ) +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::UpdateListBoxL( TInt aFeatureId ) + { + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + switch( aFeatureId ) + { + case EGSSettIdCodeInUse: + if(wcdmaSupported || upinSupported) + { + RecreatePinItemsL(); + } + break; + case EGSSettIdUpinRequest: + if(wcdmaSupported || upinSupported) + { + MakeUpinRequestItemL(); + } + break; + case EGSSettIdUpinCode: + if(wcdmaSupported || upinSupported) + { + MakeCodeItemL( EGSSettIdUpinCode ); + } + break; + case EGSSettIdPinRequest: + MakePinRequestItemL(); + break; + case EGSSettIdPinCode: + MakeCodeItemL( EGSSettIdPinCode ); + break; + case EGSSettIdPin2Code: + MakeCodeItemL( EGSSettIdPin2Code ); + break; + case EGSSettIdAutolock: + MakeAutolockItemL(); + break; + case EGSSettIdSecurityCode: + MakeCodeItemL( EGSSettIdSecurityCode ); + break; + case EGSSettIdSimChange: + MakeSimChangeItemL(); + break; + + #ifdef RD_REMOTELOCK + case EGSSettIdRemoteLock: + MakeRemoteLockItemL(); + break; + #endif // RD_REMOTELOCK + case EGSSettIdClosedUserGroup: + if(!FeatureManager::FeatureSupported( KFeatureIdFfNoCugSupport )) + { + MakeClosedUserGroupItemL(); + } + break; + case EGSSettIdSatOperations: + MakeSatOperationsItemL(); + break; + default: + return; + } + + iListBox->HandleItemAdditionL(); + } + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::MakeCodeItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeCodeItemL( const TInt aItemType ) + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + + if(wcdmaSupported || upinSupported) + { + iUpinCodeSupported = iSecurity->IsUpinSupportedL(); + iUpinCodeActive = iSecurity->IsUpinActive(); + iUpinCodeRejected = iSecurity->IsUpinBlocked(); + } + else + { + iUpinCodeSupported = EFalse; + iUpinCodeActive = EFalse; + iUpinCodeRejected = EFalse; + } + + switch ( aItemType ) + { + case EGSSettIdUpinCode: + if( iUpinCodeSupported && !iUpinCodeRejected && iUpinCodeActive ) + { + ptrBuffer = CodeItem; + iListboxItemArray->SetDynamicTextL( EGSSettIdUpinCode, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdUpinCode, + CGSListBoxItemTextArray::EVisible ); + } + else + { + iListboxItemArray->SetItemVisibilityL( EGSSettIdUpinCode, + CGSListBoxItemTextArray::EInvisible ); + } + break; + case EGSSettIdPin2Code: + ptrBuffer = CodeItem; + iListboxItemArray->SetDynamicTextL( EGSSettIdPin2Code, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdPin2Code, + CGSListBoxItemTextArray::EVisible ); + break; + case EGSSettIdSecurityCode: + ptrBuffer = SecurityCodeItem; + iListboxItemArray->SetDynamicTextL( EGSSettIdSecurityCode, + ptrBuffer ); + if(FeatureManager::FeatureSupported(KFeatureIdSapTerminalControlFw )) + { + + { + // Check the code change policy from the SCP server. + TInt allowChange = 1; + + RSCPClient scpClient; + TInt ret = scpClient.Connect(); + if ( ret == KErrNone ) + { + TBuf policyBuf; + policyBuf.Zero(); + if ( scpClient.GetParamValue( ESCPCodeChangePolicy, policyBuf ) == KErrNone ) + { + TLex lex( policyBuf ); + lex.Val( allowChange ); + #if defined(_DEBUG) + RDebug::Print(_L("(GS)CGSSettListSimSecurityContainer::\ + MakeCodeInUseItemL(): Policy retrieved: %d"), allowChange ); + #endif //DEBUG + } + else + { + #if defined(_DEBUG) + RDebug::Print(_L("(GS)CGSSettListSimSecurityContainer::\ + MakeCodeInUseItemL(): ERROR: Failed to retrieve the policy value") ); + #endif //DEBUG + } + scpClient.Close(); + } + else + { + #if defined(_DEBUG) + RDebug::Print(_L("(GS)CGSSettListSimSecurityContainer::MakeCodeInUseItemL(): \ + ERROR: Failed to connect to SCP") ); + #endif //DEBUG + } + + if ( allowChange == 1 ) + { + #if defined(_DEBUG) + RDebug::Print(_L("(GS)CGSSettListSimSecurityContainer::MakeCodeInUseItemL(): \ + Code change allowed")); + #endif //DEBUG + + iListboxItemArray->SetItemVisibilityL( EGSSettIdSecurityCode, + CGSListBoxItemTextArray::EVisible ); + } + else + { + #if defined(_DEBUG) + RDebug::Print(_L("(GS)CGSSettListSimSecurityContainer::MakeCodeInUseItemL():\ + Code change disallowed")); + #endif //DEBUG + + iListboxItemArray->SetItemVisibilityL( EGSSettIdSecurityCode, + CGSListBoxItemTextArray::EInvisible ); + } + } + + } + else + { + + iListboxItemArray->SetItemVisibilityL( EGSSettIdSecurityCode, + CGSListBoxItemTextArray::EVisible ); + + } + break; + case EGSSettIdPinCode: + default: + if( !iUpinCodeSupported || iUpinCodeRejected || !iUpinCodeActive ) + { + ptrBuffer = CodeItem; + iListboxItemArray->SetDynamicTextL( EGSSettIdPinCode, + ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdPinCode, + CGSListBoxItemTextArray::EVisible ); + } + else + { + iListboxItemArray->SetItemVisibilityL( EGSSettIdPinCode, + CGSListBoxItemTextArray::EInvisible ); + } + break; + } + CleanupStack::PopAndDestroy( dynamicText ); + + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::MakeAutolockItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeAutolockItemL() + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + TInt period = iModel->AutoLockPeriod(); + + switch ( period ) + { + case 0: + ptrBuffer = ( *iAutoLockItems )[ 0 ]; + break; + case 1: + { + TBuf tempString; + StringLoader::Format( tempString, + ( ( *iAutoLockItems )[1] ), + -1, // no index in the key string + period ); + ptrBuffer = tempString; + } + break; + default: + { + TBuf tempString; + StringLoader::Format( tempString, + ( ( *iAutoLockItems )[2] ), + -1, // no index in the key string + period ); + ptrBuffer = tempString; + } + break; + } + iListboxItemArray->SetDynamicTextL( EGSSettIdAutolock, ptrBuffer ); + CleanupStack::PopAndDestroy( dynamicText ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdAutolock, + CGSListBoxItemTextArray::EVisible ); + } + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::MakeSimChangeItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeSimChangeItemL() + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + if ( iSecurity->IsLockEnabledL( RMobilePhone::ELockPhoneToICC ) ) + { + ptrBuffer = ( *iSecurityItems )[0]; + } + else + { + ptrBuffer = ( *iSecurityItems )[1]; + } + + iListboxItemArray->SetDynamicTextL( EGSSettIdSimChange, ptrBuffer ); + CleanupStack::PopAndDestroy( dynamicText ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdSimChange, + CGSListBoxItemTextArray::EVisible ); + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer:: MakePinRequestItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer:: MakePinRequestItemL() + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + if(wcdmaSupported || upinSupported) + { + iUpinCodeSupported = iSecurity->IsUpinSupportedL(); + iUpinCodeActive = iSecurity->IsUpinActive(); + iUpinCodeRejected = iSecurity->IsUpinBlocked(); + } + else + { + iUpinCodeSupported = EFalse; + iUpinCodeActive = EFalse; + iUpinCodeRejected = EFalse; + } + + if( !iUpinCodeSupported || !iUpinCodeActive || iUpinCodeRejected ) + { + if ( iSecurity->IsLockEnabledL( RMobilePhone::ELockICC ) ) + { + ptrBuffer = ( *iPinItems )[0]; + } + else + { + ptrBuffer = ( *iPinItems )[1]; + } + + iListboxItemArray->SetDynamicTextL( EGSSettIdPinRequest, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdPinRequest, + CGSListBoxItemTextArray::EVisible ); + } + else + { + iListboxItemArray->SetItemVisibilityL( EGSSettIdPinRequest, + CGSListBoxItemTextArray::EInvisible ); + } + CleanupStack::PopAndDestroy( dynamicText ); + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer:: MakeUpinRequestItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer:: MakeUpinRequestItemL() + { + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + if(wcdmaSupported || upinSupported) + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + iUpinCodeSupported = iSecurity->IsUpinSupportedL(); + iUpinCodeActive = iSecurity->IsUpinActive(); + iUpinCodeRejected = iSecurity->IsUpinBlocked(); + + + if( iUpinCodeSupported && !iUpinCodeRejected && iUpinCodeActive ) + { + + if ( iSecurity->IsLockEnabledL( RMobilePhone::ELockUniversalPin ) ) + { + ptrBuffer = ( *iPinItems )[0]; + } + else + { + ptrBuffer = ( *iPinItems )[1]; + } + + iListboxItemArray->SetDynamicTextL( EGSSettIdUpinRequest, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdUpinRequest, + CGSListBoxItemTextArray::EVisible ); + } + else + { + iListboxItemArray->SetItemVisibilityL( EGSSettIdUpinRequest, + CGSListBoxItemTextArray::EInvisible ); + } + + CleanupStack::PopAndDestroy( dynamicText ); + } + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer:: MakeCodeInUseItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer:: MakeCodeInUseItemL() + { + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + if(wcdmaSupported || upinSupported) + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + iUpinCodeSupported = iSecurity->IsUpinSupportedL(); + iUpinCodeRejected = iSecurity->IsUpinBlocked(); + if( iUpinCodeSupported && !iUpinCodeRejected ) + { + if ( !iSecurity->IsUpinActive() ) + { + ptrBuffer = ( *iCodeItems )[0]; + } + else + { + ptrBuffer = ( *iCodeItems )[1]; + } + + iListboxItemArray->SetDynamicTextL( EGSSettIdCodeInUse, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdCodeInUse, + CGSListBoxItemTextArray::EVisible ); + } + else + { + + iListboxItemArray->SetItemVisibilityL( EGSSettIdCodeInUse, + CGSListBoxItemTextArray::EInvisible ); + } + + CleanupStack::PopAndDestroy( dynamicText ); + } + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer:: MakeClosedUserGroupItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeClosedUserGroupItemL() + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + TInt cugMode = 0; + TInt cugDefault; + TInt err = KErrNone; + + RSSSettings cugSettings; + User::LeaveIfError( cugSettings.Open() ); + + err = cugSettings.Get( ESSSettingsDefaultCug, cugDefault ); + User::LeaveIfError( err ); + + if ( cugSettings.Get( ESSSettingsCug , cugMode ) != KErrNone ) + {// getting mode was not succesful + cugMode = cugDefault; + } + + TBuf string; + + if ( cugMode == cugDefault ) + { + StringLoader::Load( string, R_CUG_NETWORK_DEFAULT ); + ptrBuffer = string; + } + else + { + switch ( cugMode ) + { + case ESSSettingsCugSuppress: + StringLoader::Load( string, R_CUG_OFF ); + ptrBuffer = string; + break; + default: + StringLoader::Load( string, R_CUG_ON ); + ptrBuffer = string; + break; + } + } + + cugSettings.Close(); + + iListboxItemArray->SetDynamicTextL( EGSSettIdClosedUserGroup, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdClosedUserGroup, + CGSListBoxItemTextArray::EVisible ); + CleanupStack::PopAndDestroy( dynamicText ); + + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer:: MakeSatOperationsItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeSatOperationsItemL() + { + HBufC* dynamicText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrBuffer ( dynamicText->Des() ); + + TInt satOperation = iModel->SatOperations(); + + if ( satOperation == 1 ) + { + ptrBuffer = ( *iSatItems )[1]; + } + else + { + ptrBuffer = ( *iSatItems )[0]; + } + + iListboxItemArray->SetDynamicTextL( EGSSettIdSatOperations, ptrBuffer ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdSatOperations, + CGSListBoxItemTextArray::EVisible ); + CleanupStack::PopAndDestroy( dynamicText ); + + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::CurrentFeatureId() +// +// --------------------------------------------------------------------------- +// +TInt CGSSimSecPluginContainer::CurrentFeatureId() const + { + return iListboxItemArray->CurrentFeature( ); + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::GetHelpContext() const +// Gets Help +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const + { + aContext.iMajor = KUidGS; + aContext.iContext = KSET_HLP_SECURITY_DEVICE_SIM; + } + + +// --------------------------------------------------------------------------- +// CGSSettListIdleContainer::RecreatePinItemsL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::RecreatePinItemsL() + { + TBool wcdmaSupported(FeatureManager::FeatureSupported( KFeatureIdProtocolWcdma )); + TBool upinSupported(FeatureManager::FeatureSupported( KFeatureIdUpin )); + if(wcdmaSupported || upinSupported) + { + //check if UPIN code is supported and not rejected + if( iSecurity->IsUpinSupportedL() ) + { + iUpinCodeSupported = ETrue; + + //check if UPIN code is active + if( iSecurity->IsUpinActive() ) + { + iUpinCodeActive = ETrue; + } + else + { + iUpinCodeActive = EFalse; + } + + //Check whether UPIN is blocked + + if( !iSecurity->IsUpinBlocked() ) + { + iUpinCodeRejected = EFalse; + } + else + { + iUpinCodeRejected = ETrue; + } + } + else + { + iUpinCodeSupported = EFalse; + iUpinCodeActive = EFalse; + } + + MakeCodeInUseItemL(); + MakeUpinRequestItemL(); + MakeCodeItemL( EGSSettIdUpinCode ); + MakePinRequestItemL(); + MakeCodeItemL( EGSSettIdPinCode ); + } + } + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::HandleResourceChangeL() +// +// Updates view layout +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::HandleResourceChangeL( TInt aType ) + { + if( aType == KAknsMessageSkinChange || + aType == KEikDynamicLayoutVariantSwitch ) + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, + mainPaneRect ); + SetRect( mainPaneRect ); + DrawNow(); + } + } + + + +// --------------------------------------------------------------------------- +// CGSSimSecPluginContainer::MakeRemoteLockItemL() +// +// +// --------------------------------------------------------------------------- +// +void CGSSimSecPluginContainer::MakeRemoteLockItemL() + { + #ifdef RD_REMOTELOCK + #ifdef _DEBUG + RDebug::Print( _L( "(SECUI)CGSSimSecPluginContainer::MakeRemoteLockItemL() - Enter" ) ); + #endif // DEBUG + + HBufC* statusItemText = HBufC::NewLC( KGSBufSize128 ); + TPtr ptrRemoteLockStatus( statusItemText->Des() ); + TBool remoteLockStatus( EFalse ); + CRemoteLockSettings* remoteLockSettings = CRemoteLockSettings::NewLC(); + + if ( remoteLockSettings->GetEnabled( remoteLockStatus ) ) + { + if ( remoteLockStatus ) + { + // Remote lock enabled + ptrRemoteLockStatus = (*iRemoteLockItems)[0]; + } + else + { + // Remote lock disabled + ptrRemoteLockStatus = (*iRemoteLockItems)[1]; + } + } + else + { + // Failed to get remote lock status + // Undefined situation. Display empty item + ptrRemoteLockStatus = KRemoteLockEmptyItem; + } + + CleanupStack::PopAndDestroy( remoteLockSettings ); + remoteLockSettings = NULL; + + // Remote Lock item + iListboxItemArray->SetDynamicTextL( EGSSettIdRemoteLock, ptrRemoteLockStatus ); + CleanupStack::PopAndDestroy( statusItemText ); + iListboxItemArray->SetItemVisibilityL( EGSSettIdRemoteLock, CGSListBoxItemTextArray::EVisible ); + + #ifdef _DEBUG + RDebug::Print( _L( "(SECUI)CGSSimSecPluginContainer::MakeRemoteLockItemL() - Exit" ) ); + #endif // DEBUG + #endif // RD_REMOTELOCK + return; + } + + +//End of File