--- a/wlansecuritysettings/wlaneapsettingsui/EapTtls/ConfigUi/src/EapTtlsUiView.cpp Thu Aug 19 09:58:27 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1903 +0,0 @@
-/*
-* Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: Implementation of EAP TTLS UI settings dialog
-*
-*/
-
-/*
-* %version: 27.1.1.1.9 %
-*/
-
-// INCLUDE FILES
-#include <eikdialg.h>
-#include <AknDialog.h>
-#include <aknlists.h>
-#include "EapTtlsUiView.h"
-#include "EapTtlsUi.hrh"
-#include <eapttlsui.rsg>
-#include <akntextsettingpage.h>
-#include <aknsettingitemlist.h>
-#include "EapTtlsUiSettingArray.h"
-#include <aknnavi.h>
-#include <akntabgrp.h>
-#include <aknnavide.h>
-#include <aknradiobuttonsettingpage.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h>
-#include <EapTlsPeapUiCipherSuites.h>
-#include <EapTlsPeapUiEapTypes.h>
-#include <EapTlsPeapUiCertificates.h>
-#include <EapType.h>
-#include <EapTypeInfo.h>
-#include <AknIconArray.h>
-#include <AknsUtils.h>
-
-#include <featmgr.h>
-#include <hlplch.h>
-#include <csxhelp/cp.hlp.hrh>
-
-
-// CONSTANTS
-// UID of general settings app, in which help texts are included
-const TUid KHelpUidPlugin = { 0x100058EC };
-
-static const TInt KSettingArrayGranularity = 4;
-static const TInt KSuiteArrayGranularity = 5;
-static const TInt KMaxLengthOfEapLine = 270;
-static const TInt KCertificateArrayGranularity = 5;
-static const TInt KMaxLengthOfSuiteName = 255;
-static const TInt KEapTtlsId = 21;
-
-_LIT( KNameSeparator, " " );
-_LIT( KEmptyString, "" );
-const TUint KFirstElement = 0;
-const TUint KSecondElement = 1;
-const TUint KMinEnabledCount = 1;
-
-/* This is the maximum length of a certificate's full name, includes
-label, primary and secondary names */
-const TUint32 KMaxFullCertLabelLength = KMaxCertLabelLength + 2 *
- KMaxNameLength + 1; // 1 is for separator.
-
-// MODULE DATA STRUCTURES
-enum TPageIds
- {
- ESettingsPage = 0,
- EEapTypePage,
- ECipherSuitePage
- };
-
-enum TSettingIds
- {
- EUserCertificateItem = 0,
- ECaCertificateItem,
- EUsernameInUseItem,
- EUsernameItem,
- ERealmInUseItem,
- ERealmItem
- };
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CEapTtlsUiDialog
-// -----------------------------------------------------------------------------
-//
-CEapTtlsUiDialog::CEapTtlsUiDialog( CEapTlsPeapUiConnection* aConnection,
- TIndexType aIndexType, TInt aIndex,
- TInt& aButtonId )
-: CAknDialog(),
- iConnection( aConnection ),
- iIndexType( aIndexType ),
- iIndex( aIndex ),
- iButtonId( &aButtonId ),
- iIsUIConstructionCompleted( EFalse ),
- iExiting( EFalse )
- {
- }
-
-
-// ---------------------------------------------------------
-// CEapTtlsUiDialog::ConstructAndRunLD
-// ---------------------------------------------------------
-//
-TInt CEapTtlsUiDialog::ConstructAndRunLD( TInt aResourceId )
- {
- CleanupStack::PushL( this );
-
- iSettingArray = CEapTtlsSettingItemArray::NewL();
-
- User::LeaveIfError( iConnection->Connect() );
-
- // Basic data
- iDataConnection = iConnection->GetDataConnection();
- if ( iDataConnection == 0 )
- {
- User::Leave( KErrNoMemory );
- }
- User::LeaveIfError( iDataConnection->Open() );
- User::LeaveIfError( iDataConnection->GetData( &iUiData ) );
-
- // Cipher suites
- iCipherSuites = iConnection->GetCipherSuiteConnection();
- if ( iCipherSuites == 0 )
- {
- User::Leave( KErrNoMemory );
- }
-
- User::LeaveIfError( iCipherSuites->Open() );
- User::LeaveIfError( iCipherSuites->GetCipherSuites( &iUiCipherSuites ) );
-
- iCipherSuitesViewArray = new( ELeave ) CDesCArrayFlat(
- KSuiteArrayGranularity );
- //EAP types
- iEapTypes = iConnection->GetEapTypeConnection();
- if ( iEapTypes == 0 )
- {
- User::Leave( KErrNoMemory );
- }
- User::LeaveIfError( iEapTypes->Open() );
- User::LeaveIfError( iEapTypes->GetEapTypes( &iUiEapTypes ) );
- if ( iUiEapTypes->Count() == 0 )
- {
- CreateEapTypeDataBaseL();
- }
-
- iEapTypeViewArray = new( ELeave ) CDesCArrayFlat(
- KSettingArrayGranularity );
-
- FeatureManager::InitializeLibL();
-
- ConstructL( R_TTLS_MENUBAR );
-
- // ExecuteLD will PushL( this ), so we have to Pop it...
- CleanupStack::Pop( this ); // this
-
- return CAknDialog::ExecuteLD( aResourceId );
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::OfferKeyEventL
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CEapTtlsUiDialog::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- TKeyResponse result( EKeyWasNotConsumed );
-
- // gently handle impatient users
- if ( !iIsUIConstructionCompleted )
- {
- return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
- TInt pageId = ActivePageId();
- if ( aType == EEventKey && pageId == KEAPTTLSCIPHERPAGE )
- {
- TInt indexBefore = iCipherSuiteListBox->CurrentItemIndex();
-
- if ( aKeyEvent.iCode == EKeyEnter )
- {
- if ( ( *iUiCipherSuites )[indexBefore].iIsEnabled )
- {
- OkToExitL( ETtlsUiCmdDisable );
- }
- else
- {
- OkToExitL( ETtlsUiCmdEnable );
- }
-
- result = EKeyWasConsumed;
- }
- else
- {
- result = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
- TInt indexAfter = iCipherSuiteListBox->CurrentItemIndex();
-
- if ( indexBefore != indexAfter )
- {
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- if( ( *iUiCipherSuites )[ indexAfter ].iIsEnabled )
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_DISABLE );
- }
- else
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_ENABLE );
- }
-
- cba.DrawDeferred();
- }
- }
- else if ( aType == EEventKey && pageId == KEAPTTLSEAPPAGE )
- {
- TInt indexBefore = iEapTypesListBox->CurrentItemIndex();
-
- if ( aKeyEvent.iCode == EKeyEnter )
- {
- if ( ( *iUiEapTypes )[indexBefore].iIsEnabled )
- {
- OkToExitL( ETtlsUiCmdConfigure );
- }
- else
- {
- OkToExitL( ETtlsUiCmdEnable );
- }
-
- result = EKeyWasConsumed;
- }
- else
- {
- result = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
- TInt indexAfter = iEapTypesListBox->CurrentItemIndex();
-
- if ( indexBefore != indexAfter )
- {
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- if( ( *iUiEapTypes )[indexAfter].iIsEnabled )
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_CONFIGURE );
- }
- else
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_ENABLE );
- }
-
- cba.DrawDeferred();
- }
- }
- else
- {
- result = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
- return result;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::~CEapTtlsUiDialog
-// -----------------------------------------------------------------------------
-//
-CEapTtlsUiDialog::~CEapTtlsUiDialog()
- {
- if ( iSettingArray )
- {
- iSettingArray->Array()->ResetAndDestroy();
- }
-
- delete iSettingArray;
-
- iSettingListBox = NULL;
-
- iDataConnection->Close();
- delete iDataConnection;
-
- iCipherSuitesViewArray->Reset();
- delete iCipherSuitesViewArray;
-
- iEapTypeViewArray->Reset();
- delete iEapTypeViewArray;
-
- iCertificates->Close();
- delete iCertificates;
-
- iCipherSuites->Close();
- delete iCipherSuites;
-
- iEapTypes->Close();
- delete iEapTypes;
-
- iConnection->Close();
-
- delete iPreviousText;
-
- FeatureManager::UnInitializeLib();
- }
-
-
-// ---------------------------------------------------------
-// CEapTtlsUiDialog::HandleListBoxEventL
-// ---------------------------------------------------------
-//
-void CEapTtlsUiDialog::HandleListBoxEventL( CEikListBox* aListBox,
- TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- {
- if ( aListBox == iSettingListBox )
- {
- OkToExitL( ETtlsUiCmdChange );
- }
-
- else if ( aListBox == iEapTypesListBox )
- {
- TInt index = iEapTypesListBox->CurrentItemIndex();
- if ( iUiEapTypes->At( index ).iIsEnabled )
- {
- ConfigureL(ETrue);
- }
- else
- {
- OkToExitL( ETtlsUiCmdEnable );
- }
- }
-
- else if ( aListBox == iCipherSuiteListBox )
- {
- TInt index = iCipherSuiteListBox->CurrentItemIndex();
- if ( iUiCipherSuites->At( index ).iIsEnabled )
- {
- OkToExitL( ETtlsUiCmdDisable );
- }
- else
- {
- OkToExitL( ETtlsUiCmdEnable );
- }
- }
-
- else
- {
- // Do nothing; we should never end up here
- }
-
- break;
- }
-
- case EEventItemActioned:
- case EEventEditingStarted:
- case EEventEditingStopped:
- case EEventPenDownOnItem:
- case EEventItemDraggingActioned:
- {
- break;
- }
-
- default:
- {
- break;
- };
- };
- }
-
-
-// ---------------------------------------------------------
-// CEapTtlsUiDialog::HandleDialogPageEventL
-// ---------------------------------------------------------
-//
-void CEapTtlsUiDialog::HandleDialogPageEventL( TInt aEventID )
- {
- CAknDialog::HandleDialogPageEventL( aEventID );
- if( iExiting )
- {
- // Exit requested.
- TryExitL( EAknCmdExit );
- }
- }
-
-
-// ---------------------------------------------------------
-// CEapTtlsUiDialog::ConfigureL
-// ---------------------------------------------------------
-//
-void CEapTtlsUiDialog::ConfigureL( TBool aQuick )
- {
- RImplInfoPtrArray eapArray;
- eapArray.Reset();
- REComSession::ListImplementationsL( KEapTypeInterfaceUid,
- eapArray );
- TInt itemIndex = iEapTypesListBox->CurrentItemIndex();
- TInt eapIndex( 0 );
- for ( TInt i = 0; i < eapArray.Count(); ++i )
- {
- CImplementationInformation* tempInfo = eapArray[i];
- if ( iUiEapTypes->At( itemIndex ).iEapType ==
- tempInfo->DataType() )
- {
- eapIndex = i;
- break;
- }
- }
-
- CEapType* eapType;
- eapType = CEapType::NewL( eapArray[eapIndex]->DataType(),
- iIndexType, iIndex );
- eapArray.ResetAndDestroy();
- eapType->SetTunnelingType( KEapTtlsId );
- CleanupStack::PushL( eapType );
- TInt buttonId = eapType->InvokeUiL();
- CleanupStack::PopAndDestroy( eapType );
- if ( buttonId == EAknCmdExit || buttonId == EEikCmdExit )
- {
- if (aQuick == EFalse)
- {
- TryExitL( buttonId );
- }
- else
- {
- iExiting = ETrue;
- // Don't exit here. Framework command chain will
- // cause a KERN-EXEC 3 panic. Handle the exit in
- // HandleDialogPageEventL().
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::PreLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::PreLayoutDynInitL()
- {
- // Change title
- ChangeTitleL( ETrue );
-
- iSettingListBox = static_cast<CAknSettingStyleListBox*>(
- ControlOrNull( ETtlsSettingsListbox ) );
- iSettingListBox->SetComponentsToInheritVisibility( ETrue );
-
- iEapTypesListBox = static_cast<CAknSingleNumberStyleListBox*>(
- ControlOrNull( ETtlsSettingsEapTypeListbox ) );
- iEapTypesListBox->SetComponentsToInheritVisibility( ETrue );
-
- iCipherSuiteListBox = static_cast<CAknSingleNumberStyleListBox*>(
- ControlOrNull( ETtlsSettingsCipherSuiteListbox ) );
- iCipherSuiteListBox->SetComponentsToInheritVisibility( ETrue );
-
- // Get certificates before building the UI.
- // Will continue when certificates are received
- iCertificates = iConnection->GetCertificateConnection( this );
- User::LeaveIfError( iCertificates->Open() );
- iCertificates->GetCertificates( &iUiUserCertificates, &iUiCACertificates );
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CompleteReadCertificates
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::CompleteReadCertificates( const TInt aResult )
- {
- if ( aResult == KErrNone ) // Certifiocates are received from core
- {
- TRAPD( err, CompleteUiConstructionL() );
- if ( err != KErrNone )
- {
- TRAP_IGNORE( TryExitL( KErrCancel ) );
- }
- }
- else
- {
- TRAP_IGNORE( TryExitL( KErrCancel ) );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CompleteUiConstructionL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::CompleteUiConstructionL()
- {
- // Initialize setting page
- iSettingListBox = static_cast<CAknSettingStyleListBox*>(
- ControlOrNull( ETtlsSettingsListbox ) );
- iSettingListBox->SetMopParent( this );
- iSettingListBox->CreateScrollBarFrameL( ETrue );
- iSettingListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
- iSettingListBox->SetListBoxObserver( this );
- DrawSettingsListL();
-
- // Initialize EAP types page
- iEapTypesListBox = static_cast<CAknSingleNumberStyleListBox*>(
- ControlOrNull( ETtlsSettingsEapTypeListbox ) );
- iEapTypesListBox->SetMopParent( this );
- iEapTypesListBox->CreateScrollBarFrameL( ETrue );
- iEapTypesListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
- iEapTypesListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- iEapTypesListBox->SetListBoxObserver( this );
-
- // Following deletes internal array created from resources.
- // To prevent memory leak.
- MDesCArray* internalArray1 = iEapTypesListBox->Model()->ItemTextArray();
- delete internalArray1;
-
- // Initialize cipher suites page
- iCipherSuiteListBox = static_cast<CAknSingleNumberStyleListBox*>(
- ControlOrNull( ETtlsSettingsCipherSuiteListbox ) );
- iCipherSuiteListBox->CreateScrollBarFrameL( ETrue );
- iCipherSuiteListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
- iCipherSuiteListBox->UpdateScrollBarsL();
- iCipherSuiteListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- iCipherSuiteListBox->SetListBoxObserver( this );
-
- //Following deletes internal array created from resources.
- // To prevent memory leak.
- MDesCArray* internalArray2 = iCipherSuiteListBox->Model()->ItemTextArray();
- delete internalArray2;
-
- SetEapIconsL();
- DrawEapListL( 0 );
-
- SetCipherIconsL();
- DrawCipherSuitesL();
-
- iIsUIConstructionCompleted = ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::PostLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::PostLayoutDynInitL()
- {
- TUid naviPaneUid;
- naviPaneUid.iUid = EEikStatusPaneUidNavi;
- CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
- CEikStatusPaneBase::TPaneCapabilities subPane =
- statusPane->PaneCapabilities( naviPaneUid );
- if ( subPane.IsPresent() && subPane.IsAppOwned() )
- {
- CAknNavigationControlContainer* naviPane =
- static_cast<CAknNavigationControlContainer*>(
- statusPane->ControlL( naviPaneUid ) );
- CAknNavigationDecorator* naviDecorator = naviPane->ResourceDecorator();
- if ( naviDecorator )
- {
- CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
- naviDecorator->DecoratedControl() );
- tabGroup->SetActiveTabById( 0 );
- tabGroup->SetTabFixedWidthL( KTabWidthWithOneTab );
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::ChangeTitleL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::ChangeTitleL( TBool aIsStarted )
- {
- TUid titlePaneUid;
- titlePaneUid.iUid = EEikStatusPaneUidTitle;
-
- CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
- CEikStatusPaneBase::TPaneCapabilities subPane =
- statusPane->PaneCapabilities( titlePaneUid );
-
- if ( subPane.IsPresent()&&subPane.IsAppOwned() )
- {
- CAknTitlePane* titlePane = static_cast<CAknTitlePane*>(
- statusPane->ControlL( titlePaneUid ) );
- if ( aIsStarted )
- {
- // Store previous application title text
- const TDesC* prevText = titlePane->Text();
- iPreviousText = HBufC::NewL( prevText->Length() );
- iPreviousText->Des().Append( *prevText );
- TDesC* titleText = iEikonEnv->AllocReadResourceLC(
- R_TTLS_SETTINGS_TITLE );
- titlePane->SetTextL( *titleText );
- CleanupStack::PopAndDestroy( titleText );
- }
- else
- {
- // Set calling application title text back
- titlePane->SetTextL( *iPreviousText );
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::OkToExitL
-// -----------------------------------------------------------------------------
-//
-TBool CEapTtlsUiDialog::OkToExitL( TInt aButtonId )
- {
- TBool ret( EFalse );
- switch ( aButtonId )
- {
- case EEikBidOk:
- {
- if( iIsUIConstructionCompleted )
- {
- TPageIds index = static_cast<TPageIds>( ActivePageIndex() );
- if ( index == ESettingsPage )
- {
- ShowSettingPageL( EFalse );
- }
- else if ( index == EEapTypePage )
- {
- ProcessCommandL( ETtlsUiCmdConfigure );
- }
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CEapTtlsUiDialog::OkToExitL - UI not ready - Ignoring key press.\n") );
- #endif
- }
- break;
- }
-
- case EAknSoftkeyOptions:
- {
- DisplayMenuL();
- break;
- }
-
- case EAknSoftkeyBack:
- case EAknCmdExit:
- {
- if( ( GetEnabledEapTypeCount() > KMinEnabledCount ) &&
- ( IsPlainMschapv2Enabled() || IsPapEnabled() ) )
- {
- HBufC* stringLabel;
-
- if ( IsPlainMschapv2Enabled() )
- {
- stringLabel = StringLoader::LoadL(
- R_TTLS_INFO_PLAIN_MSCHAP_CANNOT_ENABLE_ALONG,
- iEikonEnv );
- }
- else
- {
- stringLabel = StringLoader::LoadL(
- R_TTLS_INFO_PAP_CANNOT_ENABLE_ALONG,
- iEikonEnv );
- }
- CleanupStack::PushL( stringLabel );
- CAknInformationNote* dialog = new ( ELeave )
- CAknInformationNote( ETrue );
- dialog->ExecuteLD( *stringLabel );
- CleanupStack::PopAndDestroy( stringLabel );
-
- // after showing the info note, EAP settings page
- // must be shown
- if( ActivePageId() == KEAPTTLSSETTINGSPAGE )
- {
- TKeyEvent keyRight =
- {
- EKeyRightArrow,
- EStdKeyRightArrow,
- EModifierPureKeycode,
- 0
- };
- CAknDialog::OfferKeyEventL
- ( keyRight,
- EEventKey );
- }
- if( ActivePageId() == KEAPTTLSCIPHERPAGE )
- {
- TKeyEvent keyLeft =
- {
- EKeyLeftArrow,
- EStdKeyLeftArrow,
- EModifierPureKeycode,
- 0
- };
- CAknDialog::OfferKeyEventL
- ( keyLeft,
- EEventKey );
- }
-
- iExiting = EFalse;
- ret = EFalse;
- }
- else
- {
- if( iIsUIConstructionCompleted )
- {
- iDataConnection->Update();
- ChangeTitleL( EFalse );
- ret = ETrue;
- }
- }
- break;
- }
-
- case ETtlsUiCmdChange:
- {
- TPageIds index = static_cast<TPageIds>( ActivePageIndex() );
- if ( index == ESettingsPage )
- {
- if( iIsUIConstructionCompleted )
- {
- ShowSettingPageL( EFalse );
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CEapPeapUiDialog::ProcessCommandL - UI not ready - Ignoring key press.\n") );
- #endif
- }
- }
- break;
- }
-
- case ETtlsUiCmdConfigure:
- case ETtlsUiCmdEnable:
- case ETtlsUiCmdDisable:
- {
- ProcessCommandL( aButtonId );
- ret = EFalse;
- break;
- }
-
- default:
- {
- break;
- }
- }
-
- if ( ret )
- {
- *iButtonId = aButtonId;
- }
-
- return ret;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::DrawSettingsListL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::DrawSettingsListL()
- {
- iSettingArray->Array()->ResetAndDestroy();
- TInt ordinal = 0;
- TInt activeUserCertificate = CheckActiveUserCertificate();
- TBuf<KMaxFullCertLabelLength> aActiveuserCertificateName = KEmptyString();
- if ( activeUserCertificate != KErrNotFound )
- {
- TBuf<KMaxFullCertLabelLength> text;
- GetFullCertLabelL(
- iUiUserCertificates->At( activeUserCertificate ).iCertEntry,
- text );
- aActiveuserCertificateName.Copy( text );
- }
- else
- {
- TDesC* notDefinedText = iEikonEnv->AllocReadResourceLC(
- R_TTLS_NOT_DEFINED );
- aActiveuserCertificateName.Copy( *notDefinedText );
- CleanupStack::PopAndDestroy( notDefinedText );
- }
-
- iSettingArray->AddTextItemL( aActiveuserCertificateName,
- ETtlsSettingUserCert,
- R_TTLS_USER_CERT_STRING,
- R_TTLS_USERNAME_PAGE,
- NULL,
- ordinal++ );
-
- TInt activeCaCertificate = CheckActiveCaCertificate();
- TBuf<KMaxFullCertLabelLength> aActiveCaCertificateName = KEmptyString();
- if ( activeCaCertificate != KErrNotFound )
- {
- TBuf<KMaxFullCertLabelLength> text;
- GetFullCertLabelL(
- iUiCACertificates->At( activeCaCertificate ).iCertEntry,
- text );
- aActiveCaCertificateName.Copy( text );
- }
- else
- {
- TDesC* notDefinedText = iEikonEnv->AllocReadResourceLC(
- R_TTLS_NOT_DEFINED );
- aActiveCaCertificateName.Copy( *notDefinedText );
- CleanupStack::PopAndDestroy( notDefinedText );
- }
-
- iSettingArray->AddTextItemL( aActiveCaCertificateName,
- ETtlsSettingCaCert,
- R_TTLS_CA_CERT_STRING,
- R_TTLS_USERNAME_PAGE,
- NULL,
- ordinal++ );
-
- iSettingArray->AddBinarySettingItemL( R_TTLS_DISPLAY_AUTOUSECONF_PAGE,
- R_TTLS_USERNAME_INUSESTRING,
- R_TTLS_USERNAME_AUTOUSECONF_TEXTS,
- ordinal++,
- *iUiData->GetUseManualUsername() );
-
- iSettingArray->AddTextItemL( iUiData->GetManualUsername(),
- ETtlsTabSheetSettingsUsername,
- R_TTLS_USERNAME_STRING,
- R_TTLS_USERNAME_PAGE,
- NULL,
- ordinal++ );
-
- iSettingArray->AddBinarySettingItemL( R_TTLS_DISPLAY_AUTOUSECONF_PAGE,
- R_TTLS_REALM_INUSESTRING,
- R_TTLS_REALM_AUTOUSECONF_TEXTS,
- ordinal++,
- *iUiData->GetUseManualRealm() );
-
- iSettingArray->AddTextItemL( iUiData->GetManualRealm(),
- ETtlsTabSheetSettingsRealm,
- R_TTLS_REALM_STRING,
- R_TTLS_REALM_PAGE,
- NULL,
- ordinal++ );
-
- iSettingArray->AddBinarySettingItemL( R_TTLS_DISPLAY_AUTOUSECONF_PAGE,
- R_TTLS_TLS_PRIVACY_STRING,
- R_TTLS_TLS_PRIVACY_AUTOUSECONF_TEXTS,
- ordinal++,
- *iUiData->GetTlsPrivacy() );
-
- iSettingListBox->Model()->SetItemTextArray( iSettingArray->Array() );
- iSettingListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- iSettingArray->Array()->RecalculateVisibleIndicesL();
- iSettingListBox->HandleItemAdditionL();
- iSettingListBox->UpdateScrollBarsL();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::DynInitMenuPaneL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
-
- if ( aMenuPane && aResourceId == R_TTLS_MENU_PANE )
- {
- if ( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
-
- TPageIds index = static_cast<TPageIds>( ActivePageIndex() );
- if ( index == ESettingsPage )
- {
- aMenuPane->SetItemDimmed( ETtlsUiCmdEnable, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdDisable, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdConfigure, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveUp, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveDown, ETrue );
- }
- else if ( index == EEapTypePage )
- {
- aMenuPane->SetItemDimmed( ETtlsUiCmdChange, ETrue );
-
- if ( iEapTypeViewArray->Count() > 0 )
- {
- TInt currentIndex = iEapTypesListBox->CurrentItemIndex();
- TBool enabled = iUiEapTypes->At( currentIndex ).iIsEnabled;
-
- // Hide either "Enable" or "Disable", as appropriate.
- aMenuPane->SetItemDimmed( ETtlsUiCmdEnable, enabled );
- aMenuPane->SetItemDimmed( ETtlsUiCmdDisable, !enabled );
-
- // Don't display "Configure" for disabled items
- aMenuPane->SetItemDimmed( ETtlsUiCmdConfigure, !enabled );
-
- // Don't display "Raise priority" nor "Lower priority" for
- // disabled items
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveUp, !enabled );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveDown, !enabled );
-
- if ( enabled )
- {
- if ( currentIndex == 0 )
- {
- // Can't go higher than top.
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveUp, ETrue );
- }
- else if ( currentIndex == iEapTypeViewArray->Count()-1 ||
- ( currentIndex < iEapTypeViewArray->Count()-1 &&
- !iUiEapTypes->At( currentIndex + 1 ).iIsEnabled ) )
- {
- // Can't go lower than the last enabled item
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveDown, ETrue );
- }
- }
-
- }
- else
- {
- aMenuPane->SetItemDimmed( ETtlsUiCmdEnable, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdDisable, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdConfigure, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveUp, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveDown, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdChange, ETrue );
- }
- }
- else if ( index == ECipherSuitePage )
- {
- aMenuPane->SetItemDimmed( ETtlsUiCmdConfigure, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveUp, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdMoveDown, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdChange, ETrue );
-
- if ( iCipherSuitesViewArray->Count() > 0 )
- {
- TInt currIndex = iCipherSuiteListBox->CurrentItemIndex();
- TBool enabled = iUiCipherSuites->At( currIndex ).iIsEnabled;
-
- // Hide either "Enable" or "Disable", as appropriate.
- aMenuPane->SetItemDimmed( ETtlsUiCmdEnable, enabled );
- aMenuPane->SetItemDimmed( ETtlsUiCmdDisable, !enabled );
- }
- else
- {
- aMenuPane->SetItemDimmed( ETtlsUiCmdEnable, ETrue );
- aMenuPane->SetItemDimmed( ETtlsUiCmdDisable, ETrue );
- }
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::ProcessCommandL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::ProcessCommandL( TInt aCommand )
- {
- if ( MenuShowing() )
- {
- HideMenu();
- }
-
- TPageIds pageIndex = static_cast<TPageIds>( ActivePageIndex() );
- switch( aCommand )
- {
- case EAknCmdExit:
- {
- TryExitL( aCommand );
- break;
- }
-
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- iEikonEnv->EikAppUi()->AppHelpContextL() );
- break;
- }
-
- case ETtlsUiCmdChange:
- {
- if ( pageIndex == ESettingsPage )
- {
- if( iIsUIConstructionCompleted )
- {
- ShowSettingPageL( ETrue );
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CEapTtlsUiDialog::ProcessCommandL - UI not ready - Ignoring key press.\n") );
- #endif
- }
- }
- break;
- }
-
- case ETtlsUiCmdMoveUp:
- {
- if ( pageIndex == EEapTypePage )
- {
- TInt cur = iEapTypesListBox->CurrentItemIndex();
- MoveEapTypeL( cur, cur - 1 );
- }
- break;
- }
-
- case ETtlsUiCmdMoveDown:
- {
- if ( pageIndex == EEapTypePage )
- {
- TInt cur = iEapTypesListBox->CurrentItemIndex();
- MoveEapTypeL( cur, cur + 1 );
- }
- break;
- }
-
- case ETtlsUiCmdEnable:
- {
- if ( pageIndex == ECipherSuitePage )
- {
- TInt index = iCipherSuiteListBox->CurrentItemIndex();
- iUiCipherSuites->At( index ).iIsEnabled = ETrue;
- iCipherSuites->Update();
- DrawCipherSuitesL();
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_DISABLE );
- cba.DrawDeferred();
- }
- else if ( pageIndex == EEapTypePage )
- {
- TInt cur = iEapTypesListBox->CurrentItemIndex();
- iUiEapTypes->At( cur ).iIsEnabled = ETrue;
-
- iEapTypes->Update();
-
- // enabling moves item to the top of the list
- MoveEapTypeL( cur, 0 );
-
- // load the new CBA from resource
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_CONFIGURE );
- cba.DrawDeferred();
- }
- break;
- }
-
- case ETtlsUiCmdDisable:
- {
- if ( pageIndex == ECipherSuitePage )
- {
- TInt index = iCipherSuiteListBox->CurrentItemIndex();
- iUiCipherSuites->At( index ).iIsEnabled = EFalse;
- iCipherSuites->Update();
- DrawCipherSuitesL();
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_ENABLE );
- cba.DrawDeferred();
- }
- else if ( pageIndex == EEapTypePage )
- {
- TInt itemIndex = iEapTypesListBox->CurrentItemIndex();
-
- if( GetEnabledEapTypeCount() > KMinEnabledCount )
- {
- // disabling moves item just after the last enabled one,
- // so find that position
- TInt next = itemIndex;
-
- while ( next < iUiEapTypes->Count() - 1 &&
- iUiEapTypes->At( next ).iIsEnabled )
- {
- ++next;
- }
-
- if ( next > itemIndex &&
- !iUiEapTypes->At( next ).iIsEnabled )
- {
- --next;
- }
-
-
- iUiEapTypes->At( itemIndex ).iIsEnabled = EFalse;
-
- // move item if needed
- MoveEapTypeL( itemIndex, next );
- iEapTypes->Update();
-
- // Highlight follows movement.
- //iEapTypesListBox->SetCurrentItemIndex( next );
-
- // load the new CBA from resource
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- cba.SetCommandSetL(
- R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_ENABLE );
- cba.DrawDeferred();
- }
- else
- {
- HBufC* stringLabel;
- stringLabel = StringLoader::LoadL(
- R_TTLS_INFO_CANNOT_DISABLE_ALL_EAP_PLUGINS,
- iEikonEnv );
- CleanupStack::PushL( stringLabel );
- CAknInformationNote* dialog = new ( ELeave )
- CAknInformationNote( ETrue );
- dialog->ExecuteLD( *stringLabel );
- CleanupStack::PopAndDestroy( stringLabel );
- }
- }
- break;
- }
-
- case ETtlsUiCmdConfigure:
- {
- if ( pageIndex == EEapTypePage )
- {
- ConfigureL(EFalse);
- }
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::PageChangedL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::PageChangedL( TInt aPageId )
- {
- if ( !iIsUIConstructionCompleted )
- {
- return;
- }
-
- if ( aPageId == KEAPTTLSSETTINGSPAGE )
- {
- if (iSettingListBox->ScrollBarFrame())
- {
- iSettingListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(ETrue);
- }
- if (iEapTypesListBox->ScrollBarFrame())
- {
- iEapTypesListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- if (iCipherSuiteListBox->ScrollBarFrame())
- {
- iCipherSuiteListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- }
- else if ( aPageId == KEAPTTLSEAPPAGE )
- {
- if (iSettingListBox->ScrollBarFrame())
- {
- iSettingListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- if (iEapTypesListBox->ScrollBarFrame())
- {
- iEapTypesListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(ETrue);
- }
- if (iCipherSuiteListBox->ScrollBarFrame())
- {
- iCipherSuiteListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- }
- else if ( aPageId == KEAPTTLSCIPHERPAGE )
- {
- if (iSettingListBox->ScrollBarFrame())
- {
- iSettingListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- if (iEapTypesListBox->ScrollBarFrame())
- {
- iEapTypesListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(EFalse);
- }
- if (iCipherSuiteListBox->ScrollBarFrame())
- {
- iCipherSuiteListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(ETrue);
- }
- }
-
- CEikButtonGroupContainer& cba = ButtonGroupContainer();
- if( aPageId == KEAPTTLSSETTINGSPAGE )
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_EDIT );
- }
- else if( aPageId == KEAPTTLSEAPPAGE )
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_CONFIGURE );
- }
- else if( aPageId == KEAPTTLSCIPHERPAGE )
- {
- TInt index = iCipherSuiteListBox->CurrentItemIndex();
- if( ( *iUiCipherSuites )[ index ].iIsEnabled )
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_DISABLE );
- }
- else
- {
- cba.SetCommandSetL( R_TTLS_UI_SOFTKEYS_OPTIONS_BACK_ENABLE );
- }
- }
- cba.DrawDeferred();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::ShowSettingPageL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::ShowSettingPageL( TInt aCalledFromMenu )
- {
- TInt index = iSettingListBox->CurrentItemIndex();
- if ( index == EUserCertificateItem )
- {
- TInt activeUserCertificate = CheckActiveUserCertificate();
- CDesCArrayFlat* tempArray = new( ELeave )CDesCArrayFlat(
- KCertificateArrayGranularity );
- CleanupStack::PushL( tempArray );
-
- TDesC* noneText = iEikonEnv->AllocReadResourceLC(
- R_TTLS_NONE_SELECTION );
- tempArray->InsertL( 0, *noneText );
- CleanupStack::PopAndDestroy( noneText );
-
- for ( TInt i = 0; i < iUiUserCertificates->Count() ; i++ )
- {
- TEapTlsPeapUiCertificate certificate =
- iUiUserCertificates->At( i );
- SCertEntry entry = certificate.iCertEntry;
- TBuf<KMaxFullCertLabelLength> text;
- GetFullCertLabelL( entry, text);
- tempArray->InsertL( i+1, text );
- }
- TInt selected( 0 );
- if ( activeUserCertificate == KErrNotFound )
- {
- selected = ShowRadioButtonSettingPageL( R_TTLS_USER_CERT_STRING,
- tempArray, 0 );
- }
- else
- {
- selected = ShowRadioButtonSettingPageL( R_TTLS_USER_CERT_STRING,
- tempArray,
- activeUserCertificate+1 );
- //Plus 1 cause we added 'none' selection
- }
-
- CleanupStack::PopAndDestroy( tempArray );
- UserCertificateHouseKeeping( selected );
- iCertificates->Update();
- DrawSettingsListL(); // List must be drawn again at this stage
- }
- else if ( index == ECaCertificateItem )
- {
- TInt activeCaCertificate = CheckActiveCaCertificate();
-
- CDesCArrayFlat* tempArray = new( ELeave )CDesCArrayFlat(
- KCertificateArrayGranularity );
- CleanupStack::PushL( tempArray );
-
- TDesC* noneText = iEikonEnv->AllocReadResourceLC(
- R_TTLS_NONE_SELECTION );
- tempArray->InsertL( 0, *noneText );
- CleanupStack::PopAndDestroy( noneText );
-
- for ( TInt i = 0; i < iUiCACertificates->Count(); i++ )
- {
- TEapTlsPeapUiCertificate certificate = iUiCACertificates->At( i );
- SCertEntry entry = certificate.iCertEntry;
- TBuf<KMaxFullCertLabelLength> text;
- GetFullCertLabelL( entry, text );
- tempArray->InsertL( i+1, text );
- }
-
- TInt selected( 0 );
- if ( activeCaCertificate == KErrNotFound )
- {
- selected = ShowRadioButtonSettingPageL( R_TTLS_CA_CERT_STRING,
- tempArray, 0 );
- }
- else
- {
- selected = ShowRadioButtonSettingPageL( R_TTLS_CA_CERT_STRING,
- tempArray,
- activeCaCertificate+1 );
- //Plus 1 cause we added 'none' selection
- }
- CleanupStack::PopAndDestroy( tempArray );
- CaCertificateHouseKeeping( selected );
- iCertificates->Update();
- DrawSettingsListL(); // List must be drawn again at this stage
- }
- else
- {
- CAknSettingItem* item = iSettingArray->Array()->At( index );
- item->EditItemL( aCalledFromMenu );
- item->StoreL();
- }
-
- DrawNow();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapPeapUiDialog::MoveEapTypeL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::MoveEapTypeL( TInt aOldPos, TInt aNewPos )
- {
- TEapTlsPeapUiEapType originalUpper = iUiEapTypes->At( aOldPos );
- iUiEapTypes->Delete( aOldPos );
- iUiEapTypes->InsertL( aNewPos, originalUpper );
- iUiEapTypes->Compress(); // Might not be needed
- iEapTypes->Update();
- DrawEapListL( aNewPos );
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::DrawEapListL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::DrawEapListL( TInt aWantedIndex )
- {
- iEapTypeViewArray->Reset();
- RImplInfoPtrArray eapArray;
- eapArray.Reset();
-
- REComSession::ListImplementationsL( KEapTypeInterfaceUid, eapArray );
- for ( TInt i = 0; i < iUiEapTypes->Count(); i++ )
- {
- TBuf<KMaxLengthOfEapLine> tempLine;
-
- if ( iUiEapTypes->At( i ).iIsEnabled )
- {
- _LIT( KNumTab, "%d\t" );
- tempLine.AppendFormat( KNumTab, i+1 );
- }
- else
- {
- _LIT( KTab, "\t" );
- tempLine.Append( KTab );
- }
-
- for ( TInt index = 0; index < eapArray.Count(); index++ )
- {
- if ( eapArray[index]->DataType() == iUiEapTypes->At( i ).iEapType )
- {
- tempLine.Append( eapArray[index]->DisplayName() );
- break;
- }
- }
-
- if ( iUiEapTypes->At( i ).iIsEnabled )
- { // Add mark icon to indicate that the eap type is enabled
- _LIT( KTab0, "\t0" );
- tempLine.Append( KTab0 );
- }
-
- iEapTypeViewArray->InsertL( i, tempLine );
- }
-
- eapArray.ResetAndDestroy();
- iEapTypesListBox->Model()->SetItemTextArray( iEapTypeViewArray );
- iEapTypesListBox->HandleItemAdditionL();
- iEapTypesListBox->SetCurrentItemIndex( aWantedIndex );
- iEapTypesListBox->DrawDeferred();
- iEapTypesListBox->UpdateScrollBarsL();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::ShowRadioButtonSettingPageL
-// -----------------------------------------------------------------------------
-//
-TInt CEapTtlsUiDialog::ShowRadioButtonSettingPageL( TInt aTitle,
- CDesCArrayFlat* aValues,
- TInt aCurrentItem )
- {
- // title of the dialog
- HBufC* title = iCoeEnv->AllocReadResourceLC( aTitle );
-
- // We have everything to create dialog
- CAknRadioButtonSettingPage* dlg = new( ELeave )CAknRadioButtonSettingPage(
- R_RADIO_BUTTON_SETTING_PAGE,
- aCurrentItem,
- aValues );
- CleanupStack::PushL( dlg );
- dlg->SetSettingTextL( *title );
- CleanupStack::Pop( dlg );
- dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged );
- CleanupStack::PopAndDestroy( title ); // title
- // index must be re-turned upside down, because options list is upside down
- return aCurrentItem;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::DrawCipherSuitesL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::DrawCipherSuitesL()
- {
- iCipherSuitesViewArray->Reset();
- TInt listCount( 0 );
- TBuf<KMaxLengthOfSuiteName> temp;
- for ( TInt i = 0; i < iUiCipherSuites->Count(); i++ )
- {
- temp.Zero();
- _LIT( KTab, "\t" );
- temp.Append( KTab );
-
- TEapTlsPeapUiCipherSuite suite = iUiCipherSuites->At( i );
- TUint32 suiteId = suite.iCipherSuite;
-
- switch( suiteId )
- {
- case 0x0004:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_RSARC4MD5 );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x0005:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_RSARC4SHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x000a:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_RSA3DESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x0016:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_DHERSA3DESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x0013:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_DHEDSS3DESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x002F:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_RSAAESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x0032:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_DHERSAAESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- case 0x0033:
- {
- HBufC* suite = iCoeEnv->AllocReadResourceLC(
- R_TTLS_SUITE_DHEDSSAESSHA );
- temp.Append( *suite );
- CleanupStack::PopAndDestroy( suite );
- break;
- }
-
- default:
- {
- temp.Append( KEmptyString );
- break;
- }
- }
-
- if ( iUiCipherSuites->At( i ).iIsEnabled )
- { // Add mark icon to indicate that the suite is enabled
- _LIT( KTab0, "\t0" );
- temp.Append( KTab0 );
- }
-
- iCipherSuitesViewArray->InsertL( listCount, temp );
- listCount++;
- }
-
- iCipherSuiteListBox->Model()->SetItemTextArray( iCipherSuitesViewArray );
- iCipherSuiteListBox->HandleItemAdditionL();
- iCipherSuiteListBox->DrawDeferred();
- iCipherSuiteListBox->UpdateScrollBarsL();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CheckActiveUserCertificate
-// -----------------------------------------------------------------------------
-//
-TInt CEapTtlsUiDialog::CheckActiveUserCertificate()
- {
- for ( TInt i = 0; i < iUiUserCertificates->Count(); i++ )
- {
- if ( iUiUserCertificates->At( i ).iIsEnabled )
- {
- return i;
- }
- }
-
- return KErrNotFound;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CheckActiveCaCertificate
-// -----------------------------------------------------------------------------
-//
-TInt CEapTtlsUiDialog::CheckActiveCaCertificate()
- {
- for ( TInt i = 0; i < iUiCACertificates->Count(); i++ )
- {
- if ( iUiCACertificates->At( i ).iIsEnabled )
- {
- return i;
- }
- }
-
- return KErrNotFound;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::UserCertificateHouseKeeping
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::UserCertificateHouseKeeping( TInt aSelected )
- {
- for ( TInt i = 0; i < iUiUserCertificates->Count(); i++ )
- {
- iUiUserCertificates->At( i ).iIsEnabled = EFalse;
- }
-
- if ( aSelected != 0 ) // Zero index is none
- {
- iUiUserCertificates->At( aSelected-1 ).iIsEnabled = ETrue;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CaCertificateHouseKeeping
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::CaCertificateHouseKeeping( TInt aSelected )
- {
- for ( TInt i = 0; i < iUiCACertificates->Count(); i++ )
- {
- iUiCACertificates->At( i ).iIsEnabled = EFalse;
- }
-
- if ( aSelected != 0 ) // Zero index is none
- {
- iUiCACertificates->At( aSelected-1 ).iIsEnabled = ETrue;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::CreateEapTypeDataBaseL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::CreateEapTypeDataBaseL()
- {
- RImplInfoPtrArray eapArray;
- eapArray.Reset();
-
- REComSession::ListImplementationsL( KEapTypeInterfaceUid, eapArray );
- TInt allowedInTtlsCount( 0 );
- for ( TInt i = 0; i < eapArray.Count(); i++ )
- {
- if ( !CEapType::IsDisallowedInsideTTLS(*eapArray[i]) )
- {
- CImplementationInformation* info = eapArray[i];
- TEapTlsPeapUiEapType tempEapType;
- tempEapType.iEapType = info->DataType();
-
- // BINARY RESOURCE DATA
-
- // [FE] [00 00 00] [TEapType_bigendian]
- // OR
- // [FE] [FF FF FF] [MSCHAPv2_bigendian]
-
- _LIT8( KExpEapFirstQuad, "\xFE\0\0\0" );
- TPtrC8 firstQuad( tempEapType.iEapType.Ptr(), 4 );
- // TUint32 dataType = BigEndian::Get32( tempEapType.iEapType.Ptr()+4 );
- TUint32 dataType = ( tempEapType.iEapType[4] << 24 ) |
- ( tempEapType.iEapType[5] << 16 ) |
- ( tempEapType.iEapType[6] << 8 ) |
- tempEapType.iEapType[7];
-
-
- if ( !firstQuad.Compare( KExpEapFirstQuad ) &&
- ( dataType == EAPSettings::EEapSim ||
- dataType == EAPSettings::EEapAka ) )
- {
- tempEapType.iIsEnabled = ETrue;
- iUiEapTypes->InsertL( KFirstElement, tempEapType );
- }
- else
- {
- tempEapType.iIsEnabled = EFalse;
- iUiEapTypes->InsertL( allowedInTtlsCount, tempEapType );
- }
-
- allowedInTtlsCount++;
- }
- }
-
- __ASSERT_DEBUG( iUiEapTypes->Count() >= 2, User::Panic( _L("EAP-SIM/AKA missing"), 1) );
-
- // Check if EAP-SIM and EAP-AKA are in correct order
-
- // BINARY RESOURCE DATA
- const TDesC8& firstEap = iUiEapTypes->At( KFirstElement ).iEapType;
- const TDesC8& secondEap = iUiEapTypes->At( KSecondElement ).iEapType;
-
- TUint32 dataTypeFirst = ( firstEap[4] << 24 ) |
- ( firstEap[5] << 16 ) |
- ( firstEap[6] << 8 ) |
- firstEap[7];
- TUint32 dataTypeSecond = ( secondEap[4] << 24 ) |
- ( secondEap[5] << 16 ) |
- ( secondEap[6] << 8 ) |
- secondEap[7];
-
- // If not, switch them
- if ( dataTypeFirst == EAPSettings::EEapAka &&
- dataTypeSecond == EAPSettings::EEapSim )
- {
- TEapTlsPeapUiEapType tempEapType = iUiEapTypes->At( KFirstElement );
- iUiEapTypes->Delete( KFirstElement );
- iUiEapTypes->InsertL( KSecondElement, tempEapType );
- }
-
- iEapTypes->Update();
- eapArray.ResetAndDestroy();
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::SetCipherIconsL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::SetCipherIconsL()
- {
- CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( 1 );
- CleanupStack::PushL( icons );
-
- MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-
- CGulIcon* icon = CGulIcon::NewLC();
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
- AknsUtils::CreateColorIconL( skinInstance,
- KAknsIIDQgnIndiMarkedAdd,
- KAknsIIDQsnIconColors,
- EAknsCIQsnIconColorsCG13,
- bitmap,
- mask,
- AknIconUtils::AvkonIconFileName(),
- EMbmAvkonQgn_indi_marked_add,
- EMbmAvkonQgn_indi_marked_add_mask,
- KRgbBlack );
- icon->SetBitmap( bitmap );
- icon->SetMask( mask );
- icons->AppendL( icon );
-
- CleanupStack::Pop( icon );
- CleanupStack::Pop( icons ); // icons
-
- iCipherSuiteListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
-
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::SetEapIconsL
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::SetEapIconsL()
- {
- CArrayPtr< CGulIcon >* icons = new( ELeave ) CAknIconArray( 1 );
- CleanupStack::PushL( icons );
-
- MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-
- CGulIcon* icon = CGulIcon::NewLC();
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
- AknsUtils::CreateColorIconL( skinInstance,
- KAknsIIDQgnIndiMarkedAdd,
- KAknsIIDQsnIconColors,
- EAknsCIQsnIconColorsCG13,
- bitmap,
- mask,
- AknIconUtils::AvkonIconFileName(),
- EMbmAvkonQgn_indi_marked_add,
- EMbmAvkonQgn_indi_marked_add_mask,
- KRgbBlack );
- icon->SetBitmap( bitmap );
- icon->SetMask( mask );
- icons->AppendL( icon );
-
- CleanupStack::Pop( icon );
- CleanupStack::Pop( icons ); // icons
-
- iEapTypesListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::GetEnabledEapTypeCount
-// -----------------------------------------------------------------------------
-//
-TUint CEapTtlsUiDialog::GetEnabledEapTypeCount()
- {
- TUint itemCount( 0 );
- for( TInt i( 0 ); i < iUiEapTypes->Count(); ++i )
- {
- if( iUiEapTypes->At( i ).iIsEnabled )
- {
- ++itemCount;
- }
- }
- return itemCount;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::IsPlainMschapv2Enabled
-// -----------------------------------------------------------------------------
-//
-TBool CEapTtlsUiDialog::IsPlainMschapv2Enabled()
- {
- TBool isEnabled( EFalse );
- for( TUint i( 0 ); i < iUiEapTypes->Count(); ++i )
- {
- // was: _LIT8( KPlainMsChapV2ExpandedId, "\xFE\xFF\xFF\xFF\0\0\0\x1A" );
- // workaround:
- _LIT8( KPlainMsChapV2ExpandedId, "\xFE\xFF\xFF\xFF\0\0\0\x63" );
-
- const TDesC8& currEap = iUiEapTypes->At( i ).iEapType;
-
- if ( !currEap.Compare( KPlainMsChapV2ExpandedId ) )
- {
- isEnabled = iUiEapTypes->At( i ).iIsEnabled;
- break;
- }
-
- }
- return isEnabled;
- }
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::IsPapEnabled
-// -----------------------------------------------------------------------------
-//
-TBool CEapTtlsUiDialog::IsPapEnabled()
- {
- TBool isEnabled( EFalse );
- for( TUint i( 0 ); i < iUiEapTypes->Count(); ++i )
- {
- _LIT8( KPapExpandedId, "\xFE\xFF\xFF\xFF\0\0\0\x62" );
- const TDesC8& currEap = iUiEapTypes->At( i ).iEapType;
- if ( !currEap.Compare( KPapExpandedId ) )
- {
- isEnabled = iUiEapTypes->At( i ).iIsEnabled;
- break;
- }
- }
- return isEnabled;
- }
-
-
-// -----------------------------------------------------------------------------
-// CEapTtlsUiDialog::GetHelpContext
-// -----------------------------------------------------------------------------
-//
-void CEapTtlsUiDialog::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KHelpUidPlugin;
- TPageIds index = static_cast<TPageIds>( ActivePageIndex() );
- switch ( index )
- {
- case EEapTypePage:
- {
- aContext.iContext = KSET_HLP_WLAN_EAP_TTLS_TYPES;
- break;
- }
-
- case ECipherSuitePage:
- {
- aContext.iContext = KSET_HLP_WLAN_EAP_TTLS_SUITES;
- break;
- }
-
- default:
- {
- aContext.iContext = KSET_HLP_WLAN_EAP_TTLS_SETT;
- break;
- }
- }
- }
-
-
-void CEapTtlsUiDialog::GetFullCertLabelL( const SCertEntry& aCert,
- TDes& aFullLabel )
- {
- TInt length = 0;
-
- // For label.
- length += aCert.iLabel.Length();
-
- // For separator between label and primary name.
- length += KNameSeparator.iTypeLength;
-
- // For primary name.
- length += aCert.iPrimaryName.Length();
-
- if ( !( aCert.iLabel.Length() ) )
- {
- // For secondary name.
- length += aCert.iSecondaryName.Length();
- }
-
- if( length > aFullLabel.MaxLength() )
- {
-#if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CEapTtlsUiDialog::GetFullCertLabelL - ERROR! Length Mismatch in Certificate's full name\n") );
-#endif
- }
-
- HBufC* label = HBufC::NewL( length );
- label->Des().Append( aCert.iLabel );
-
- label->Des().Append( KNameSeparator );
- label->Des().Append( aCert.iPrimaryName );
-
- if ( !( aCert.iLabel.Length() ) )
- {
- // Secondary name, only if no label. Certificate manager does the same way.
- label->Des().Append( aCert.iSecondaryName );
- }
-
- aFullLabel.Copy( label->Des().Left( aFullLabel.MaxLength() ) );
-
- delete label;
- label = NULL;
- }
-
-
-// End of file