diff -r 8840d3e38314 -r 7aac0b9e8906 wlansecuritysettings/wapisecuritysettingsui/src/wapisecuritysettingsdlg.cpp --- 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 -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include "wapisecuritysettingsimpl.h" -#include "wapisecuritysettingsuipanic.h" -#include "wapisecuritysettingsdlg.h" -#include "wapisecuritysettingsui.hrh" - -#include -#include - -#include - - -// 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