securitydialogs/SecUi/GSSimSecPlugin/Src/GSSimSecPluginContainer.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:44:34 +0200
changeset 1 d5423fbb4f29
parent 0 164170e6151a
child 9 6e226572c5f0
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* 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 <aknlists.h>
#include <etelmm.h>
#include <rsssettings.h>
#include <StringLoader.h>
#include <featmgr.h>
#include <csxhelp/cp.hlp.hrh>
#include <gsfwviewuids.h>
#include <GSSimSecPluginRsc.rsg>
#include <gslistbox.h>
#include <AknsConstants.h>
#include <secuisecuritysettings.h>


#ifdef RD_REMOTELOCK
#include <RemoteLockSettings.h>
_LIT( KRemoteLockEmptyItem, " " );
#endif

#include    <SCPClient.h>                                                  
// 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<KSCPMaxIntLength> 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<KGSBufSize128> tempString;
            StringLoader::Format( tempString, 
                                ( ( *iAutoLockItems )[1] ),
                                  -1, // no index in the key string
                                  period );
            ptrBuffer = tempString;
            }
            break;
        default:
            {
            TBuf<KGSBufSize128> 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<KMaxStringLength> 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