--- a/wlansecuritysettings/wlaneapsettingsui/pap/configui/src/papuiview.cpp Thu Aug 19 09:58:27 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,649 +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 PAP UI settings dialog
-*
-*/
-
-/*
-* %version: 13 %
-*/
-
-// INCLUDE FILES
-#include "papuiview.h"
-#include "papuisettingarray.h"
-#include "papuipwsettingitem.h"
-#include "papui.hrh"
-#include <papui.rsg>
-#include <eikdialg.h>
-#include <AknDialog.h>
-#include <aknlists.h>
-#include <akntextsettingpage.h>
-#include <aknsettingitemlist.h>
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <aknnotewrappers.h>
-#include <StringLoader.h>
-#include <EapTlsPeapUiConnection.h>
-#include <EapTlsPeapUiDataConnection.h>
-#include <EapTlsPeapUiTlsPeapData.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 };
-
-// MODULE DATA STRUCTURES
-enum TSettingIds
- {
- EUsernameItem=0,
- EPasswordPromptItem,
- EPasswordItem
- };
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::CPapUiDialog
-// -----------------------------------------------------------------------------
-//
-CPapUiDialog::CPapUiDialog( CEapTlsPeapUiConnection* aConnection,
- TInt& aButtonId )
-: CAknDialog(),
- iConnection( aConnection ),
- iNaviPane( 0 ),
- iNaviDecorator( 0 ),
- iButtonId( &aButtonId ),
- iSettingPwPrompt( ETrue ),
- iIsUIConstructionCompleted( EFalse ),
- iUsernameCancelled( EFalse )
- {
- }
-
-
-// ---------------------------------------------------------
-// CPapUiDialog::ConstructAndRunLD
-// ---------------------------------------------------------
-//
-TInt CPapUiDialog::ConstructAndRunLD( TInt aResourceId )
- {
- CleanupStack::PushL( this );
-
- iSettingArray = CPapSettingItemArray::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 ) );
-
- //Copy the eapol UI data to the temporary data shown on the setting UI
- iSettingUsername.Copy( iUiData->GetPapUserName() );
- iSettingPwPrompt = *( iUiData->GetPapPasswordPrompt() );
- iSettingPassword.Copy( iUiData->GetPapPassword() );
-
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("When read from eapol, iSettingUsername = %S"), &iSettingUsername );
- RDebug::Print(_L("When read from eapol, iSettingPwPrompt = %d"), iSettingPwPrompt );
- RDebug::Print(_L("When read from eapol, iSettingPassword = %S"), &iSettingPassword );
- #endif
-
- FeatureManager::InitializeLibL();
-
- ConstructL( R_PAP_MENUBAR );
-
- // ExecuteLD will PushL( this ), so we have to Pop it first...
- CleanupStack::Pop( this );
-
- return CAknDialog::ExecuteLD( aResourceId );
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::~CPapUiDialog
-// -----------------------------------------------------------------------------
-//
-CPapUiDialog::~CPapUiDialog()
- {
-
- delete iNaviDecorator;
-
- if ( iSettingArray )
- {
- iSettingArray->Array()->ResetAndDestroy();
- delete iSettingArray;
- }
-
- iSettingListBox = NULL;
-
- if ( iDataConnection )
- {
- iDataConnection->Close();
- delete iDataConnection;
- }
-
- if ( iConnection )
- {
- iConnection->Close();
- }
-
- delete iPreviousText;
-
- FeatureManager::UnInitializeLib();
- }
-
-
-// ---------------------------------------------------------
-// CPapUiDialog::HandleListBoxEventL
-// ---------------------------------------------------------
-//
-void CPapUiDialog::HandleListBoxEventL( CEikListBox* /*aListBox*/,
- TListBoxEvent aEventType )
- {
- switch ( aEventType )
- {
- case EEventEnterKeyPressed:
- case EEventItemSingleClicked:
- {
- OkToExitL( EPapUiCmdChange );
- break;
- }
-
- case EEventItemActioned:
- case EEventEditingStarted:
- case EEventEditingStopped:
- case EEventPenDownOnItem:
- case EEventItemDraggingActioned:
- {
- break;
- }
-
- default:
- {
- break;
- };
- };
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::PreLayoutDynInitL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::PreLayoutDynInitL()
- {
- ChangeTitleL( ETrue );
-
- TUid naviPaneUid;
- naviPaneUid.iUid = EEikStatusPaneUidNavi;
- CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
- CEikStatusPaneBase::TPaneCapabilities subPane =
- statusPane->PaneCapabilities( naviPaneUid );
- if ( subPane.IsPresent()&&subPane.IsAppOwned() )
- {
- iNaviPane = static_cast<CAknNavigationControlContainer*>(
- statusPane->ControlL( naviPaneUid ) );
-
- // Set empty text to hide tabs.
- iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
- iNaviPane->PushL( *iNaviDecorator );
- }
-
-
- // Initialize setting page
- iSettingListBox = static_cast<CAknSettingStyleListBox*>(
- ControlOrNull( EPapSettingsListBox ) );
- iSettingListBox->SetMopParent( this );
- iSettingListBox->CreateScrollBarFrameL( ETrue );
- iSettingListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
- iSettingListBox->SetListBoxObserver( this );
- DrawSettingsListL();
-
- iIsUIConstructionCompleted = ETrue;
-
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::ChangeTitleL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::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_PAP_SETTINGS_TITLE );
- titlePane->SetTextL( *titleText );
- CleanupStack::PopAndDestroy( titleText );
- }
- else
- {
- // Set calling application title text back
- titlePane->SetTextL( *iPreviousText );
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::OkToExitL
-// -----------------------------------------------------------------------------
-//
-TBool CPapUiDialog::OkToExitL( TInt aButtonId )
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::OkToExitL") );
- #endif
-
- TBool ret( EFalse );
- switch ( aButtonId )
- {
- case EEikBidOk:
- {
- if( iIsUIConstructionCompleted )
- {
- if ( iSettingListBox->IsFocused() )
- {
- ShowSettingPageL( EFalse );
- }
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::OkToExitL - UI not ready - Ignoring key press.\n") );
- #endif
- }
-
- break;
- }
-
- case EAknSoftkeyOptions:
- {
- DisplayMenuL();
- break;
- }
-
- case EAknSoftkeyBack:
- case EAknCmdExit:
- {
- UpdateEapolData();
- ChangeTitleL( EFalse );
- ret = ETrue;
- break;
- }
-
- case EPapUiCmdChange:
- {
- if( iIsUIConstructionCompleted )
- {
- ShowSettingPageL( EFalse );
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::ProcessCommandL - UI not ready - Ignoring key press.\n") );
- #endif
- }
-
- break;
- }
-
- default:
- {
- break;
- }
- }
-
- if ( ret )
- {
- *iButtonId = aButtonId;
- }
-
- return ret;
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::DrawSettingsListL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::DrawSettingsListL()
- {
- iSettingArray->Array()->ResetAndDestroy();
- TInt ordinal = 0;
-
- // ---------------------------------------------------------------
- // Username setting item. If the username has never been set,
- // shows "(not defined)", otherwise shows the username.
- iSettingArray->AddTextItemL( iSettingUsername,
- EPapSettingPageUserName,
- R_PAP_USERNAME_SETTING_TITLE,
- R_PAP_USERNAME_PAGE,
- NULL,
- ordinal++ );
-
- // ---------------------------------------------------------------
- // Password prompt setting item. Radio buttons Prompt/User defined.
- iSettingArray->AddBinarySettingItemL( R_PAP_PASSWORD_POPUP_PAGE,
- R_PAP_PASSWORD_SETTING_TITLE,
- R_PAP_PASSWORD_PROMPT_CHOICES,
- ordinal++,
- iSettingPwPrompt );
-
- // ---------------------------------------------------------------
- // Password setting item. Never visible in the setting list, but the
- // setting page opens when the user selects "User defined" in the
- // password prompt setting item.
- iSettingArray->AddPasswordItemL( iSettingPassword,
- EPapSettingPagePassword,
- R_PAP_PASSWORD_SETTING_TITLE,
- R_PAP_PASSWORD_SETTING_PAGE,
- NULL,
- ordinal++ );
-
- // Set the last item hidden
- CAknSettingItem* item = iSettingArray->Array()->At( EPasswordItem );
- item->SetHidden( ETrue );
-
-
- iSettingListBox->Model()->SetItemTextArray( iSettingArray->Array() );
- iSettingListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
- iSettingArray->Array()->RecalculateVisibleIndicesL();
- iSettingListBox->HandleItemAdditionL();
- iSettingListBox->UpdateScrollBarsL();
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::DynInitMenuPaneL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::DynInitMenuPaneL( TInt aResourceId,
- CEikMenuPane* aMenuPane )
- {
- CAknDialog::DynInitMenuPaneL( aResourceId, aMenuPane );
-
- if ( aResourceId == R_PAP_MENU_PANE )
- {
- if ( aMenuPane && !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
-
- }
- }
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::UpdateEapolData
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::UpdateEapolData()
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::UpdateEapolData") );
- RDebug::Print(_L("Saving username: %S"), &iSettingUsername );
- RDebug::Print(_L("Saving pwprompt: %d"), iSettingPwPrompt );
- RDebug::Print(_L("Saving password: %S"), &iSettingPassword );
- #endif
-
- // username
- if ( iSettingUsername.Length() )
- {
- ( iUiData->GetPapUserName() ).Copy( iSettingUsername );
- }
-
-
- // pwprompt
- *( iUiData->GetPapPasswordPrompt() ) = iSettingPwPrompt;
-
- // password
- ( iUiData->GetPapPassword() ).Copy( iSettingPassword );
-
- iDataConnection->Update();
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::ProcessCommandL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::ProcessCommandL( TInt aCommand )
- {
- if ( MenuShowing() )
- {
- HideMenu();
- }
-
- switch( aCommand )
- {
- case EAknCmdExit:
- {
- TryExitL( aCommand );
- break;
- }
-
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- iEikonEnv->EikAppUi()->AppHelpContextL() );
- break;
- }
-
- case EPapUiCmdChange:
- {
- if( iIsUIConstructionCompleted )
- {
- ShowSettingPageL( ETrue );
- }
- else
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::ProcessCommandL - UI not ready - Ignoring key press.\n") );
- #endif
- }
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::ShowSettingPageL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::ShowSettingPageL( TInt aCalledFromMenu )
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::ShowSettingPageL") );
- #endif
-
- TInt index = iSettingListBox->CurrentItemIndex();
-
- if ( index == EUsernameItem )
- {
- ShowUsernameSettingPageL();
- }
-
- else if ( index == EPasswordPromptItem )
- {
- // The previous value is needed for comparison,
- // after the user has done the editing
- TBool oldChoice = iSettingPwPrompt;
-
- // Show the radio button page and let the user edit
- CAknSettingItem* item = iSettingArray->Array()->At( index );
- item->EditItemL( aCalledFromMenu );
- item->StoreL();
-
- // Check the new value
- TBool newChoice = iSettingPwPrompt;
-
- // Prompt -> User defined
- if ( oldChoice && !newChoice )
- {
- // Ask to set a password
- ShowPasswordSettingPageL();
-
- // If the password item was cancelled,
- // or if username was prompted and cancelled,
- // restore "Prompt" for the password prompt setting
- if ( iSettingArray->IsPwItemCancelled() || iUsernameCancelled )
- {
- // Toggle the setting back to Prompt without showing the page
- item->EditItemL( EFalse );
- item->StoreL();
- }
- }
-
- // User defined -> User defined
- else if ( !oldChoice && !newChoice )
- {
- // Ask to set a new password
- ShowPasswordSettingPageL();
- }
-
- // Prompt -> Prompt
- else if ( oldChoice && newChoice )
- {
- // Do nothing
- }
-
- // User defined -> Prompt
- else if ( !oldChoice && newChoice )
- {
- // Remove the password
- CPapUiPwSettingItem* pwItem =
- static_cast< CPapUiPwSettingItem* >(
- iSettingArray->Array()->At( EPasswordItem ) );
- pwItem->DeletePasswordL();
-
- }
-
- else
- {
- // It shouldn't be possible to end up here
- }
-
- }
-
- else
- {
- // shouldn't end up here
- }
-
- DrawNow();
- }
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::ShowUsernameSettingPageL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::ShowUsernameSettingPageL()
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::ShowUsernameSettingPageL") );
- #endif
-
- iUsernameCancelled = EFalse;
-
- CAknSettingItem* item = iSettingArray->Array()->At( EUsernameItem );
- item->EditItemL( EFalse );
- item->StoreL();
- }
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::ShowPasswordSettingPageL
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::ShowPasswordSettingPageL()
- {
- #if defined(_DEBUG) || defined(DEBUG)
- RDebug::Print(_L("CPapUiDialog::ShowPasswordSettingPageL") );
- #endif
-
- CAknSettingItem* item = iSettingArray->Array()->At( EPasswordItem );
-
- item->EditItemL( EFalse );
- item->StoreL();
- DrawNow();
-
- // If password is set, then username must also be defined
- if ( !iSettingUsername.Length() && !iSettingArray->IsPwItemCancelled() )
- {
- // Show an info note about missing username
- HBufC* message = NULL;
- message = StringLoader::LoadLC( R_PAP_DEFINE_USERNAME_INFO_NOTE );
- CAknInformationNote* note = new( ELeave ) CAknInformationNote( ETrue );
- note->ExecuteLD( *message );
- CleanupStack::PopAndDestroy( message );
-
- ShowUsernameSettingPageL();
-
- // If the username is still empty, it can only mean that the user has
- // cancelled the operation -> remove the temporarily accepted password
- if ( !iSettingUsername.Length() )
- {
- iUsernameCancelled = ETrue;
- // Remove the password
- CPapUiPwSettingItem* pwItem =
- static_cast< CPapUiPwSettingItem* >(
- iSettingArray->Array()->At( EPasswordItem ) );
- pwItem->DeletePasswordL();
- }
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CPapUiDialog::GetHelpContext
-// -----------------------------------------------------------------------------
-//
-void CPapUiDialog::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KHelpUidPlugin;
- aContext.iContext = KSET_HLP_WLAN_EAP_PAP;
- }
-
-// End of File