--- a/wlansecuritysettings/wapisecuritysettingsui/src/wapisecuritysettingsdlg.cpp Fri Mar 19 09:29:58 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1074 +0,0 @@
-/*
-* ============================================================================
-* Name : wapisecuritysettingsdlg.cpp
-* Part of : WAPI Security Settings UI
-*
-* Description:
-* Implementation of dialog.
-*
-* Version: %version: 16 %
-*
-* Copyright (C) 2008 Nokia Corporation.
-* This material, including documentation and any related
-* computer programs, is protected by copyright controlled by
-* Nokia Corporation. All rights are reserved. Copying,
-* including reproducing, storing, adapting or translating, any
-* or all of this material requires the prior written consent of
-* Nokia Corporation. This material also contains confidential
-* information which may not be disclosed to others without the
-* prior written consent of Nokia Corporation.
-*
-* ============================================================================
-*/
-
-// INCLUDE FILES
-#include <aknnavide.h>
-#include <akntitle.h>
-#include <aknradiobuttonsettingpage.h>
-#include <akntextsettingpage.h>
-#include <aknmfnesettingpage.h>
-#include <barsread.h>
-#include <StringLoader.h>
-#include <aknnotewrappers.h>
-
-#include <wapisecuritysettingsui.h>
-#include <wapisecuritysettingsui.rsg>
-#include "wapisecuritysettingsimpl.h"
-#include "wapisecuritysettingsuipanic.h"
-#include "wapisecuritysettingsdlg.h"
-#include "wapisecuritysettingsui.hrh"
-
-#include <hlplch.h>
-#include <csxhelp/wapi.hlp.hrh>
-
-#include <featmgr.h>
-
-
-// CONSTANT DECLARATIONS
-
-// Number of fields of main view
-LOCAL_D const TInt KNumOfFieldsMain = 3;
-
-LOCAL_D const TInt KTitles_Wapi_Main_Cert[KNumOfFieldsMain] =
- {
- R_WAPI_AUTH,
- R_WAPI_CLIENT_CERT,
- R_WAPI_ROOT_CERT
- };
-LOCAL_D const TInt KFields_Wapi_Main_Cert[KNumOfFieldsMain] =
- {
- CWAPISecuritySettingsDlg::EWapiAuth,
- CWAPISecuritySettingsDlg::EWapiUserCert,
- CWAPISecuritySettingsDlg::EWapiCACert
- };
-
-LOCAL_D const TInt KTitles_Wapi_Main_PSK[KNumOfFieldsMain] =
- {
- R_WAPI_AUTH,
- R_WAPI_PRESHARED_KEY_FORMAT,
- R_WAPI_PRESHARED_KEY
- };
-LOCAL_D const TInt KFields_Wapi_Main_PSK[KNumOfFieldsMain] =
- {
- CWAPISecuritySettingsDlg::EWapiAuth,
- CWAPISecuritySettingsDlg::EWapiPSKFormat,
- CWAPISecuritySettingsDlg::EWapiPSK
- };
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::CWAPISecuritySettingsDlg
-// ---------------------------------------------------------
-//
-CWAPISecuritySettingsDlg::CWAPISecuritySettingsDlg( TInt& aEventStore )
-: iEventStore( &aEventStore )
- {
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::~CWAPISecuritySettingsDlg
-// ---------------------------------------------------------
-//
-CWAPISecuritySettingsDlg::~CWAPISecuritySettingsDlg()
- {
- if ( iTitlePane )
- {
- // set old text back, if we have it...
- if ( iOldTitleText )
- {
- TRAP_IGNORE( iTitlePane->SetTextL( *iOldTitleText ) );
- delete iOldTitleText;
- }
- }
- FeatureManager::UnInitializeLib();
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::NewL
-// ---------------------------------------------------------
-//
-CWAPISecuritySettingsDlg* CWAPISecuritySettingsDlg::NewL( TInt& aEventStore )
- {
- CWAPISecuritySettingsDlg* secSett =
- new ( ELeave )CWAPISecuritySettingsDlg( aEventStore );
- return secSett;
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::ConstructAndRunLD
-// ---------------------------------------------------------
-//
-TInt CWAPISecuritySettingsDlg::ConstructAndRunLD(
- CWAPISecuritySettingsImpl* aSecuritySettings,
- const TDesC& aTitle )
- {
- CleanupStack::PushL( this );
-
- iSecuritySettings = aSecuritySettings;
- iConnectionName = aTitle;
-
- // Build menu according to current authentication scheme.
- if (iSecuritySettings->GetAuthentication() == EWapiAuthPSK)
- {
- iFieldsMain = ( TWapiMember* ) KFields_Wapi_Main_PSK;
- iTitlesMain = MUTABLE_CAST( TInt*, KTitles_Wapi_Main_PSK );
- }
- else // ... == EWapiAuthCert
- {
- iFieldsMain = ( TWapiMember* ) KFields_Wapi_Main_Cert;
- iTitlesMain = MUTABLE_CAST( TInt*, KTitles_Wapi_Main_Cert );
- }
-
- //Let's fetch pointers to the certificate arrays
-
- iSecuritySettings->GetCertificateLabels( iUserCertificates, iCACertificates );
-
- #if defined( _DEBUG ) || defined( DEBUG )
- if ( iUserCertificates )
- {
- RDebug::Print(_L("CWAPISecuritySettingsDlg::ConstructAndRunLD, %d user certs"), iUserCertificates->Count() );
- }
- else
- {
- RDebug::Print(_L("CWAPISecuritySettingsDlg::ConstructAndRunLD, no user certs") );
- }
-
- if ( iCACertificates )
- {
- RDebug::Print(_L("CWAPISecuritySettingsDlg::ConstructAndRunLD, %d ca certs"), iCACertificates->Count() );
- }
- else
- {
- RDebug::Print(_L("CWAPISecuritySettingsDlg::ConstructAndRunLD, no ca certs") );
- }
- #endif
-
- FeatureManager::InitializeLibL();
-
- ConstructL( R_WAPI_SECURITY_SETTINGS_MENUBAR );
-
- // ExecuteLD will PushL( this ), so we have to Pop it...
- CleanupStack::Pop( this ); // this
- return ExecuteLD( R_WAPISETTINGS_DIALOG );
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::OkToExitL
-// ---------------------------------------------------------
-//
-TBool CWAPISecuritySettingsDlg::OkToExitL( TInt aButtonId )
-{
- // Translate the button presses into commands for the appui & current
- // view to handle
- TBool retval( EFalse );
- if ( aButtonId == EAknSoftkeyOptions )
- {
- DisplayMenuL();
- }
- else if ( aButtonId == EEikCmdExit ) // ShutDown requested
- {
- *iEventStore |= CWAPISecuritySettings::EShutDownReq;
- retval = ETrue;
- }
- else if ( aButtonId == EAknSoftkeyBack || aButtonId == EAknCmdExit )
- {
- if (iSecuritySettings->GetAuthentication() == EWapiAuthPSK)
- {
- if (iSecuritySettings->IsValid())
- {
- *iEventStore |= CWAPISecuritySettings::EValid;
- retval = ETrue;
- }
- else if ( aButtonId == EAknSoftkeyBack )
- {
- HBufC* stringHolder = StringLoader::LoadL(
- R_WAPI_QUEST_PRESHARED_KEY_DATA_MISSING, iEikonEnv );
- CleanupStack::PushL( stringHolder );
-
- CAknQueryDialog *queryDialog = new (ELeave) CAknQueryDialog();
-
- queryDialog->PrepareLC( R_WAPI_SEC_SETT_CONF_QUERY );
- queryDialog->SetPromptL( stringHolder->Des() );
- retval = queryDialog->RunLD();
-
- CleanupStack::PopAndDestroy( stringHolder ); // stringHolder
-
- }
- else
- {
- retval = ETrue;
- }
- }
- else
- {
- *iEventStore |= CWAPISecuritySettings::EValid;
- retval = ETrue;
- }
-
- if ( aButtonId == EAknCmdExit )
- {
- *iEventStore |= CWAPISecuritySettings::EExitReq;
- }
-
- }
- else if( aButtonId == EWapiSelCmdChange )
- {
- ChangeSettingsL();
- retval = EFalse; // don't exit the dialog
- }
-
- return retval;
-}
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::OfferKeyEventL
-// ---------------------------------------------------------
-//
-TKeyResponse CWAPISecuritySettingsDlg::OfferKeyEventL(
- const TKeyEvent& aKeyEvent, TEventCode aType )
- {
- TKeyResponse retval( EKeyWasNotConsumed );
- TChar charCode( aKeyEvent.iCode );
-
- // Only interested in standard key events
- if ( aType == EEventKey )
- {
- // If a menu is showing offer key events to it.
- if ( CAknDialog::MenuShowing() )
- {
- retval = CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
- else
- {
- if ( iList )
- {
- // as list IS consuming, must handle because it IS
- //the SHUTDOWN or, a view switch is shutting us down...
- if ( aKeyEvent.iCode == EKeyEscape )
- {
- ProcessCommandL( EEikCmdExit );
- retval = EKeyWasConsumed;
- }
- else
- {
- retval = iList->OfferKeyEventL( aKeyEvent, aType );
- }
- }
- else
- {
- if ( aKeyEvent.iCode == EKeyOK )
- {
- ProcessCommandL( EWapiSelCmdChange );
- retval = EKeyWasConsumed;
- }
- }
- }
- }
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::HandleListboxDataChangeL
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::HandleListboxDataChangeL()
- {
- // fill up our new list with data
- CDesCArrayFlat* itemArray = new ( ELeave ) CDesCArrayFlat( 4 );
- CleanupStack::PushL( itemArray );
-
- FillListWithDataL( *itemArray, *iFieldsMain, KNumOfFieldsMain,
- iTitlesMain );
-
- iList->Model()->SetItemTextArray( itemArray );
-
- CleanupStack::Pop( itemArray ); // now it is owned by the LB, so pop it
- iItemArray = itemArray;
-
- iList->HandleItemAdditionL();
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::ProcessCommandL
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::ProcessCommandL( TInt aCommandId )
- {
- if ( MenuShowing() )
- {
- HideMenu();
- }
-
- switch ( aCommandId )
- {
- case EWapiSelCmdChange:
- {
- ChangeSettingsL();
- break;
- }
-
- case EWapiSelCmdReset:
- {
- TRAPD( err, iSecuritySettings->ResetCertificateStoreL() );
-
- HBufC* label;
-
- if ( err == KErrNone )
- {
- //Certificate store was emptied, RARRAY's were closed,
- //pointer's were freed and certificates's in use were set
- //to "None" when ResetcertificateStoreL was called.
- //So we have to update the selections on the screen to
- //"(Not defined)" and redraw
-
- //refresh pointers
- iSecuritySettings->GetCertificateLabels(
- iUserCertificates, iCACertificates );
-
-
- for ( TInt i = 0; i < KNumOfFieldsMain; i++ )
- {
-
- TWapiMember* ptr = iFieldsMain + i;
- TInt* tptr = iTitlesMain + i;
-
- UpdateListBoxItemL( *ptr, *tptr, i );
- *iEventStore |= CWAPISecuritySettings::EModified;
-
- iList->ScrollToMakeItemVisible( i );
- iList->DrawItem( i );
- }
-
-
-
- label = StringLoader::LoadL( R_WAPI_DONE, iEikonEnv );
- }
- else
- {
- label = StringLoader::LoadL( R_WAPI_FAILURE, iEikonEnv );
- }
-
- CleanupStack::PushL( label );
-
- CAknInformationNote* dialog = new (ELeave)CAknInformationNote(
- ETrue );
- dialog->ExecuteLD( *label );
-
- CleanupStack::PopAndDestroy( label );
-
- break;
- }
-
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- iEikonEnv->EikAppUi()->AppHelpContextL() );
- break;
- }
-
- case EAknSoftkeyBack:
- case EAknCmdExit:
- case EEikCmdExit:
- {
- TryExitL( aCommandId );
- break;
- }
-
- default:
- {
- // silently ignore it
- break;
- }
- }
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::HandleListBoxEventL
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::HandleListBoxEventL( CEikListBox* /*aListBox*/,
- TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- {
- ChangeSettingsL();
- break;
- }
-
- case EEventEditingStarted:
- case EEventEditingStopped:
- case EEventPenDownOnItem:
- case EEventItemDraggingActioned:
- {
- break;
- }
-
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- break;
- };
- };
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::PreLayoutDynInitL()
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::PreLayoutDynInitL()
- {
- // first get StatusPane
- CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
-
- // then get TitlePane
- iTitlePane = ( CAknTitlePane* ) statusPane->ControlL( TUid::Uid(
- EEikStatusPaneUidTitle ) );
- // if not already stored, store it for restoring
- if ( !iOldTitleText )
- {
- iOldTitleText = iTitlePane->Text()->AllocL();
- }
-
- // set new titlepane text
- iTitlePane->SetTextL( iConnectionName );
-
- iList = STATIC_CAST( CAknSettingStyleListBox*,
- Control( KWapiMainSettingsListboxId ) );
-
- iList->CreateScrollBarFrameL( ETrue );
- iList->ScrollBarFrame()->SetScrollBarVisibilityL
- ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-
- HandleListboxDataChangeL();
-
- iList->SetCurrentItemIndex( 0 );
- iList->SetListBoxObserver( this );
- }
-
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::DynInitMenuPaneL
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
- if ( aResourceId == R_WAPI_SECURITY_SETTINGS_MENU )
- {
- if( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
- }
- }
-
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::FillListWithDataL
-//----------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::FillListWithDataL( CDesCArrayFlat& aItemArray,
- const TWapiMember& arr,
- TInt aLength,
- const TInt* aRes )
- {
- TWapiMember* wapiMember = MUTABLE_CAST( TWapiMember*, &arr );
-
- for( TInt i = 0; i < aLength; i++ )
- {
- HBufC* itemText = CreateTextualListBoxItemL( *wapiMember,
- *aRes );
- CleanupStack::PushL( itemText );
- aItemArray.AppendL( itemText->Des() );
- CleanupStack::PopAndDestroy( itemText );
-
- wapiMember++;
- aRes++;
- }
- }
-
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::UpdateListBoxItemL
-//----------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::UpdateListBoxItemL( TWapiMember aMember,
- TInt aRes, TInt aPos )
- {
- HBufC* itemText = CreateTextualListBoxItemL( aMember, aRes );
- CleanupStack::PushL( itemText );
- // first try to add, if Leaves, list will be untouched
- iItemArray->InsertL( aPos, itemText->Des() );
- // if successful, previous item is scrolled up with one,
- // so delete that one...
- if ( ++aPos < iItemArray->MdcaCount() )
- {
- iItemArray->Delete( aPos );
- }
- CleanupStack::PopAndDestroy( itemText );
- }
-
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::CreateTextualListBoxItemL
-//----------------------------------------------------------
-//
-HBufC* CWAPISecuritySettingsDlg::CreateTextualListBoxItemL(
- TWapiMember aMember, TInt aRes )
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("CWAPISecuritySettingsDlg::CreateTextualListBoxItemL") );
- #endif
-
-
- // Define a heap descriptor to hold title text
- // that are "WAPI client certificate" or
- // "WAPI root certificate"
- HBufC* titleText = iEikonEnv->AllocReadResourceLC( aRes );
-//
-// TInt certIndex = KNone;
-// TPtrC certPtr;
-
- HBufC* optText = NULL;
-
-
- switch ( aMember )
- {
- case EWapiAuth:
- {
- if (iSecuritySettings->GetAuthentication() == EWapiAuthPSK)
- {
- optText = iEikonEnv->AllocReadResourceLC(R_WAPI_AUTH_PSK);
- }
- else // ... == EWapiAuthCert
- {
- optText = iEikonEnv->AllocReadResourceLC(R_WAPI_AUTH_CERT);
- }
- }
- break;
- case EWapiUserCert:
- case EWapiCACert:
- {
- optText = FormatCertTextualListBoxItemL(aMember, aRes);
- break;
- }
- case EWapiPSKFormat:
- {
- if (iSecuritySettings->GetKeyFormat() == CWAPISecuritySettings::EWapiKeyAscii)
- {
- optText = iEikonEnv->AllocReadResourceLC(R_WAPI_PRESHARED_KEY_FORMAT_ASCII);
- }
- else // ... == EWapiKeyHex
- {
- optText = iEikonEnv->AllocReadResourceLC(R_WAPI_PRESHARED_KEY_FORMAT_HEX);
- }
- break;
- }
- case EWapiPSK:
- {
- if (!iSecuritySettings->hasWapiPSKKey())
- {
- // PSK key not set.
- optText = iEikonEnv->AllocReadResourceLC(R_WAPI_PRESHARED_KEY_NOT_DEFINED);
- }
- else
- {
- // PSK key set.
- _LIT( KStars, "****" );
- optText = HBufC::NewLC( KStars().Length() );
- optText->Des().Copy( KStars );
-
- }
- break;
- }
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- break;
- }
- }
- _LIT( KTxtListItemFormat, " \t%S\t\t%S" );
- const TInt KSpaceAndTabsLength = 4;
-
- // Define a heap descriptor to hold all the item text
- // +4 for space and tab characters
-
- TInt length = titleText->Length() + optText->Length()
- + KSpaceAndTabsLength;
-
- HBufC* itemText = HBufC::NewLC( length );
-
- // Define a modifiable pointer descriptor to be able to append the title
- // text and the certificate label to the non-modifiable heap descriptor
- // itemText
- TPtr itemTextPtr = itemText->Des();
- itemTextPtr.Format( KTxtListItemFormat, titleText, optText );
-
- CleanupStack::Pop( itemText ); // itemtext is popped
-
- CleanupStack::PopAndDestroy( 2, titleText ); // optText, titleText
- return itemText;
- }
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::FormatCertTextualListBoxItemL
-//----------------------------------------------------------
-//
-HBufC* CWAPISecuritySettingsDlg::FormatCertTextualListBoxItemL(
- TWapiMember aMember, TInt /* aRes */ )
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("CWAPISecuritySettingsDlg::FormatCertTextualListBoxItemL") );
- #endif
-
- TInt certIndex = KCertNone;
- TPtrC certPtr;
-
- //Check that pointers are not null for example after
- //certificate store has been reset.
- switch ( aMember )
- {
- case EWapiUserCert:
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("user certIndex = %d"), certIndex );
- #endif
-
- if ( iUserCertificates )
- {
- iSecuritySettings->GetUserCertInUse( certIndex );
- certPtr.Set ((*iUserCertificates)[certIndex]);
- }
-
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("user certIndex = %d"), certIndex );
- #endif
-
- break;
- }
-
- case EWapiCACert:
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("ca certIndex = %d"), certIndex );
- #endif
-
- if ( iCACertificates )
- {
- iSecuritySettings->GetCACertInUse( certIndex );
- certPtr.Set ((*iCACertificates)[certIndex]);
- }
-
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("ca certIndex = %d"), certIndex );
- #endif
-
- break;
- }
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- break;
- }
- }
-
- // Define a heap descriptor to hold the certificate label text
- HBufC16* certText;
-
- if ( certIndex == KCertNone )
- {
- // If "None" is selected from pop up setting page then
- // "(Not defined)" is shown on the main screen. This item
- // has to localized text so read it from resource file.
- certText = iEikonEnv->AllocReadResourceLC( R_WAPI_CERT_NOT_DEFINED );
- }
- else
- {
- //Use certificate text found from certificate array
- //(pointer was set in switch case above)
- certText = HBufC::NewLC( (certPtr.Length()) ); //pushes pointer
- //to Cleanup stack
- certText->Des().Copy( certPtr );
- }
-
- return certText;
- }
-
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::ShowPopupSettingPageL
-//----------------------------------------------------------
-//
-TBool CWAPISecuritySettingsDlg::ShowPopupSettingPageL( TWapiMember aData )
- {
- TInt currvalue( 0 );
- TBool retval( EFalse );
- CDesCArrayFlat* items = FillPopupSettingPageLC( aData, currvalue );
-
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("CWAPISecuritySettingsDlg::ShowPopupSettingPageL, %d items"), items->Count() );
- #endif
-
- TInt attr_resid( 0 );
-
- switch ( aData )
- {
- case EWapiUserCert:
- {
- attr_resid = R_WAPI_CLIENT_CERT;
- break;
- }
-
- case EWapiCACert:
- {
- attr_resid = R_WAPI_ROOT_CERT;
- break;
- }
-
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- attr_resid = 0;
- break;
- }
- }
-
- HBufC* titlebuf;
- CAknRadioButtonSettingPage* dlg;
- if ( attr_resid )
- {
- titlebuf = iEikonEnv->AllocReadResourceLC( attr_resid );
- dlg = new ( ELeave )CAknRadioButtonSettingPage(
- R_RADIO_BUTTON_SETTING_PAGE, currvalue, items );
- CleanupStack::PushL( dlg );
- TPtrC ptr( titlebuf->Des() );
- dlg->SetSettingTextL( ptr );
- CleanupStack::Pop( dlg ); // dlg
- }
- else
- {
- dlg = new ( ELeave )CAknRadioButtonSettingPage(
- R_RADIO_BUTTON_SETTING_PAGE, currvalue, items );
- }
- if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
- {
- retval = UpdateFromPopupSettingPage( aData, currvalue );
- }
-
- if ( attr_resid )
- {
- CleanupStack::PopAndDestroy( titlebuf ); // titlebuf
- }
-
- CleanupStack::PopAndDestroy( items ); // items. It deletes also all
- // elements in the array.
- return retval;
- }
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::ShowPopupPSKSettingPageL
-//----------------------------------------------------------
-//
-TBool CWAPISecuritySettingsDlg::ShowPopupPSKSettingPageL()
- {
- TBool retval( EFalse );
-
- HBufC16* bufKeyData = HBufC16::NewLC( KWapiMaxKeyLength );
- TPtr16 ptrKeyData( bufKeyData->Des() );
-
- TBool showPage( ETrue );
- while ( showPage )
- {
- CAknTextSettingPage* settingPage =
- new( ELeave )CAknTextSettingPage( R_PSK_SETTING_PAGE_KEY_DATA,
- ptrKeyData, EAknSettingPageNoOrdinalDisplayed );
-
- if ( settingPage->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted ) )
- {
- HBufC8* buf8 = HBufC8::NewLC( bufKeyData->Des().Length() );
- buf8->Des().Copy( bufKeyData->Des() );
-
- if ( iSecuritySettings->SetWapiPSKKeyL(ptrKeyData) != KErrNone )
- {
- TInt resourceId = R_WAPI_INFO_PRESHARED_KEY_ILLEGAL_CHARS;
- if ( (iSecuritySettings->GetKeyFormat()
- == CWAPISecuritySettings::EWapiKeyHex)
- && (ptrKeyData.Length() % 2 != 0))
- {
- resourceId = R_WAPI_INFO_PRESHARED_KEY_NOT_EVEN;
- }
- HBufC* stringLabel;
- stringLabel = StringLoader::LoadL( resourceId );
- CleanupStack::PushL( stringLabel );
-
- CAknInformationNote* dialog = new ( ELeave )
- CAknInformationNote( ETrue );
-
- CleanupStack::Pop( stringLabel );
-
- dialog->ExecuteLD( *stringLabel );
- delete stringLabel;
- }
- else
- {
- retval = ETrue;
- showPage = EFalse;
- }
-
- CleanupStack::PopAndDestroy( buf8 ); // buf8
- }
- else
- {
- showPage = EFalse;
- }
- }
-
- CleanupStack::PopAndDestroy( bufKeyData ); // bufKeyData
-
- return retval;
- }
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::FillPopupSettingPageLC
-// ---------------------------------------------------------
-//
-CDesCArrayFlat* CWAPISecuritySettingsDlg::FillPopupSettingPageLC(
- TWapiMember aData,
- TInt& aCurrvalue )
- {
- TInt certIndex = KCertNone;
- CDesCArrayFlat* items = new( ELeave)CDesCArrayFlat( 1 );
- CleanupStack::PushL( items );
-
-
- // "None" item is not read from the certificate table as it has to be
- // localized string
- RBuf16 resourceText( iEikonEnv->AllocReadResourceL( R_WAPI_NONE ) );
- items->AppendL( resourceText );
- resourceText.Close();
-
- switch ( aData )
- {
- case EWapiUserCert:
- {
- // Let's add user certificate labels from RARRAY
- if ( iUserCertificates )
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("CWAPISecuritySettingsDlg::FillPopupSettingPageLC, %d user certificates"), iUserCertificates->Count() );
- #endif
-
- TPtrC ptr;
- for ( TInt i = 1; i < iUserCertificates->Count(); i++ )
- {
- ptr.Set ((*iUserCertificates)[i]); // AppendL needs a pointer
- items->AppendL( ptr );
- }
- }
- iSecuritySettings->GetUserCertInUse( certIndex );
- break;
- }
-
- case EWapiCACert:
- {
- //Lets add CA certificate labels from RARRAY
- if (iCACertificates)
- {
- TPtrC ptr;
- for ( TInt i = 1; i < iCACertificates->Count(); i++ )
- {
- ptr.Set((*iCACertificates)[i]); // AppendL needs a pointer
- items->AppendL( ptr );
- }
- }
- iSecuritySettings->GetCACertInUse( certIndex );
- break;
- }
-
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic ( EUnknownCase ) );
- break;
- }
- }
- aCurrvalue = certIndex; //Set current choice
- return items;
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::UpdateFromPopupSettingPage
-// ---------------------------------------------------------
-//
-TBool CWAPISecuritySettingsDlg::UpdateFromPopupSettingPage( TWapiMember aData,
- TInt aCurrvalue )
- {
- #if defined( _DEBUG ) || defined( DEBUG )
- RDebug::Print(_L("CWAPISecuritySettingsImpl::UpdateFromPopupSettingPage, aCurrvalue = %d"), aCurrvalue );
- #endif
-
- TInt certIndex;
- TBool retVal( EFalse );
-
- switch ( aData )
- {
- case EWapiUserCert:
- {
- //Fetch the current certificate in use
- iSecuritySettings->GetUserCertInUse( certIndex );
-
- if ( certIndex != aCurrvalue )
- {
- iSecuritySettings->SetUserCertInUse( aCurrvalue );
- retVal = ETrue;
- }
- break;
- }
-
- case EWapiCACert:
- {
- //Fetch the current certificate in use
- iSecuritySettings->GetCACertInUse( certIndex );
-
- if ( certIndex != aCurrvalue )
- {
- iSecuritySettings->SetCACertInUse( aCurrvalue );
- retVal = ETrue;
- }
- break;
-
- }
-
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- break;
- }
- }
- return retVal;
- }
-
-
-//----------------------------------------------------------
-// CWAPISecuritySettingsDlg::ChangeSettingsL
-//----------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::ChangeSettingsL()
- {
- TInt itemIndex = Max( iList->CurrentItemIndex(), 0 );
- TWapiMember* ptr = iFieldsMain + itemIndex;
- TInt* tptr = iTitlesMain + itemIndex;
-
- switch ( *ptr )
- {
- case EWapiAuth:
- {
- if (iSecuritySettings->GetAuthentication() == EWapiAuthCert)
- {
- iSecuritySettings->SetAuthentication( EWapiAuthPSK );
- iFieldsMain = ( TWapiMember* ) KFields_Wapi_Main_PSK;
- iTitlesMain = MUTABLE_CAST( TInt*, KTitles_Wapi_Main_PSK );
- }
- else // ... == EWapiAuthPSK
- {
- iSecuritySettings->SetAuthentication( EWapiAuthCert );
- iFieldsMain = ( TWapiMember* ) KFields_Wapi_Main_Cert;
- iTitlesMain = MUTABLE_CAST( TInt*, KTitles_Wapi_Main_Cert );
- }
- HandleListboxDataChangeL();
- *iEventStore |= CWAPISecuritySettings::EModified;
- break;
- }
- case EWapiCACert:
- case EWapiUserCert:
- {
- if ( ShowPopupSettingPageL( *ptr ) )
- {
- UpdateListBoxItemL( *ptr, *tptr, itemIndex );
- *iEventStore |= CWAPISecuritySettings::EModified;
- }
- break;
- }
- case EWapiPSKFormat:
- {
- if (iSecuritySettings->GetKeyFormat() == CWAPISecuritySettings::EWapiKeyAscii)
- {
- iSecuritySettings->SetKeyFormat(CWAPISecuritySettings::EWapiKeyHex);
- }
- else // ... == EWapiKeyHex
- {
- iSecuritySettings->SetKeyFormat(CWAPISecuritySettings::EWapiKeyAscii);
- }
- UpdateListBoxItemL( *ptr, *tptr, itemIndex );
- *iEventStore |= CWAPISecuritySettings::EModified;
- break;
- }
- case EWapiPSK:
- {
- if ( ShowPopupPSKSettingPageL())
- {
- UpdateListBoxItemL(*ptr, *tptr, itemIndex);
- *iEventStore |= CWAPISecuritySettings::EModified;
- }
- break;
- }
- default:
- {
- __ASSERT_DEBUG( EFalse, Panic( EUnknownCase ) );
- break;
- }
- }
-
- iList->ScrollToMakeItemVisible( itemIndex );
- iList->SetCurrentItemIndexAndDraw( itemIndex );
- }
-
-
-// ---------------------------------------------------------
-// CWAPISecuritySettingsDlg::GetHelpContext
-// ---------------------------------------------------------
-//
-void CWAPISecuritySettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KWAPISecuritySettingsUiHelpMajor;
- aContext.iContext = KSET_HLP_WLAN_WAPI_MAIN;
-
- }
-
-// End of File