diff -r 05bc53fe583b -r 83ca720e2b9a cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlg.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlg.cpp Wed Sep 01 12:23:51 2010 +0100 @@ -0,0 +1,976 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Dialog for editing wlan settings for a wlan connection method +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cmlogger.h" +#include "cmwlancommonconstants.h" +#include "cmpwlansettingsdlg.h" +#include "cmpwlansettingsdlgadv.h" +#include +#include "cmpluginwlan.h" +#include "cmpluginmenucommands.hrh" +#include +#include +#include "cmmanagerimpl.h" + +using namespace CMManager; + +const TUint32 KScanSSIDSelectionItems[] = + { + R_QTN_WLAN_SETT_HIDDEN_NETWORK_NO, + R_QTN_WLAN_SETT_HIDDEN_NETWORK_YES, + 0 + }; + +const TUint32 KSecModeRBSelectionItems[] = + { + R_QTN_WLAN_SETT_SECURITY_MODE_OPEN, + R_QTN_WLAN_SETT_SECURITY_MODE_WEP, + 0 + }; + +const TUint32 KSecModeRBIRSelectionItems[] = + { + R_QTN_WLAN_SETT_SECURITY_MODE_OPEN, + R_QTN_WLAN_SETT_SECURITY_MODE_WEP, + R_QTN_WLAN_SETT_SECURITY_MODE_802_1X, + R_QTN_WLAN_SETT_SECURITY_MODE_WPA, + 0 + }; + +const TUint32 KSecModeRBIRSelectionItemsWAPI[] = + { + R_QTN_WLAN_SETT_SECURITY_MODE_OPEN, + R_QTN_WLAN_SETT_SECURITY_MODE_WEP, + R_QTN_WLAN_SETT_SECURITY_MODE_802_1X, + R_QTN_WLAN_SETT_SECURITY_MODE_WPA, + R_QTN_WLAN_SETT_SECURITY_MODE_WAPI, + 0 + }; + +const TUint32 KNetworkRBSelectionItems[] = + { + R_QTN_WLAN_SETT_NETWORK_MODE_INFRA, + R_QTN_WLAN_SETT_NETWORK_MODE_ADHOC, + 0 + }; + +const TUint32 KNWNameSelectionItems[] = + { + R_QTN_WLAN_SETT_NETWORK_NAME_USER_DEFINED, + R_QTN_WLAN_SETT_NETWORK_NAME_SCAN, + 0 + }; + +// ================= MEMBER FUNCTIONS ======================================= + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::NewL() +// -------------------------------------------------------------------------- +// +CmPluginWlanSettingsDlg* CmPluginWlanSettingsDlg::NewL( + CCmPluginBaseEng& aCmPluginBase ) + { + CmPluginWlanSettingsDlg* self = + new (ELeave) CmPluginWlanSettingsDlg( aCmPluginBase ); + return self; + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::CmPluginWlanSettingsDlg() +// -------------------------------------------------------------------------- +// +CmPluginWlanSettingsDlg::CmPluginWlanSettingsDlg( + CCmPluginBaseEng& aCmPluginBase ) + : CmPluginBaseSettingsDlg( aCmPluginBase ) + , iNotifyFromAdv( KCmNotifiedNone ) + { + + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ConstructAndRunLD +// -------------------------------------------------------------------------- +// +TInt CmPluginWlanSettingsDlg::ConstructAndRunLD( ) + { + // Set this flag to allow edit continue + iCanEditingContinue = ETrue; + + CleanupStack::PushL( this ); + LoadResourceL( KPluginWlanResDirAndFileName ); + CleanupStack::Pop( this ); + + CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); + cmMgr.WatcherRegisterL( this ); + + return CmPluginBaseSettingsDlg::ConstructAndRunLD( ); + } + +// --------------------------------------------------------- +// CmPluginWlanSettingsDlg::~CmPluginWlanSettingsDlg +// Destructor +// --------------------------------------------------------- +// +CmPluginWlanSettingsDlg::~CmPluginWlanSettingsDlg() + { + iResourceReader.Close(); + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::RunAdvancedSettingsL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::RunAdvancedSettingsL() + { + CmPluginWlanSettingsDlgAdv* AdvDlg = + CmPluginWlanSettingsDlgAdv::NewL( iCmPluginBaseEng ); + + if (!iHasSettingChanged) + { + iHasSettingChanged = ETrue; + } + + // This view may have to un-register as watcher here + CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); + cmMgr.WatcherUnRegister(); + + AdvDlg->RegisterParentView( this ); + TInt ret = AdvDlg->ConstructAndRunLD(); + + if( iNotifyFromAdv == KCmNotifiedNone ) + { + if( ret == KDialogUserExit ) + { + iExitReason = KDialogUserExit; + ExitSettingsL(EFalse); + } + else + { + // Re-register as watcher if advanced view comes back or exists normally + cmMgr.WatcherRegisterL( this ); + } + } + else + { + HandleCommsDatChangeL(); + } + } + +// -------------------------------------------------------------------------- +// CmPluginBaseSettingsDlg::UpdateListBoxContentBearerSpecificL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::UpdateListBoxContentBearerSpecificL( + CDesCArray& aItemArray ) + { + TBool boolSettingVal( EFalse ); // just for helping make code readable + TInt valResId(0); + + // DATA BEARER - only for real bearer types + AppendSettingTextsL( aItemArray, ECmBearerSettingName ); + // NETWORK NAME + AppendSettingTextsL( aItemArray, EWlanSSID ); + // NETWORK STATUS + boolSettingVal = iCmPluginBaseEng.GetBoolAttributeL( EWlanScanSSID ); + AppendSettingTextsL( aItemArray, + EWlanScanSSID, + boolSettingVal ? + R_QTN_WLAN_SETT_HIDDEN_NETWORK_YES : + R_QTN_WLAN_SETT_HIDDEN_NETWORK_NO ); + // WLAN NETWORK MODE + switch( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) ) + { + case EAdhoc: + { + valResId = R_QTN_WLAN_SETT_NETWORK_MODE_ADHOC; + break; + } + case EInfra: + // fall-through intended here + default: + { + valResId = R_QTN_WLAN_SETT_NETWORK_MODE_INFRA; + break; + } + } + + AppendSettingTextsL( aItemArray, EWlanConnectionMode, valResId ); + // WLAN SECURITY MODE + switch( iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ) ) + { + case EWlanSecModeWep : + { + valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WEP; + break; + } + case EWlanSecMode802_1x: + { + valResId = R_QTN_WLAN_SETT_SECURITY_MODE_802_1X; + break; + } + case EWlanSecModeWpa: + case EWlanSecModeWpa2: + { + valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WPA; + break; + } + case EWlanSecModeWAPI: + { + valResId = R_QTN_WLAN_SETT_SECURITY_MODE_WAPI; + break; + } + case EWlanSecModeOpen: + // fall-through intended here + default: + { + valResId = R_QTN_WLAN_SETT_SECURITY_MODE_OPEN; + break; + } + } + AppendSettingTextsL( aItemArray, EWlanSecurityMode, valResId ); + // WLAN SECURITY SETTINGS + AppendSettingTextsL( aItemArray, + EWlanSecuritySettings, + R_QTN_WLAN_SETT_SECURITY_SETTINGS, + 0 ); + // HOMEPAGE + AppendSettingTextsL( aItemArray, ECmStartPage ); + } + + +//--------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ChangeBoolSettingL +//--------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::ChangeBoolSettingL( TUint32 aAttribute, + TInt aCommandId ) + { + // Change was selected from menu + if ( aCommandId == EPluginBaseCmdChange ) + { + TInt selected = + iCmPluginBaseEng.GetBoolAttributeL( aAttribute ); + TInt origVal = selected; + + if ( ShowRadioButtonSettingPageL( KScanSSIDSelectionItems, + selected, + R_QTN_WLAN_SETT_HIDDEN_NETWORK ) && + origVal != selected ) + { + iCmPluginBaseEng.SetBoolAttributeL( aAttribute, + selected ); + UpdateListBoxContentL(); + } + } + // Selection key was selected + else + { + switch ( aAttribute ) + { + case EWlanScanSSID: + { + TBool boolFromCM = EFalse; + boolFromCM = iCmPluginBaseEng.GetBoolAttributeL( aAttribute ); + iCmPluginBaseEng.SetBoolAttributeL( aAttribute , !boolFromCM ); + UpdateListBoxContentL(); + break; + } + case EWlanConnectionMode: + { + TInt intFromCM = 0; + intFromCM = iCmPluginBaseEng.GetIntAttributeL( aAttribute ); + iCmPluginBaseEng.SetIntAttributeL( aAttribute , !intFromCM ); + UpdateListBoxContentL(); + break; + } + } + } + } + +//--------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ShowSecurityModeRBPageL +//--------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::ShowSecurityModeRBPageL() + { + TInt selected = 0; + TInt secMode = iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ); + const TUint32* items = NULL; + + //converting secMode to idex + switch ( secMode ) + { + case EWlanSecModeOpen: + { + selected = 0; + break; + } + case EWlanSecModeWep: + { + selected = 1; + break; + } + case EWlanSecMode802_1x: + { + selected = 2; + break; + } + case EWlanSecModeWpa: + { + selected = 3; + break; + } + // is this a real case? + case EWlanSecModeWpa2: + { + selected = 3; + break; + } + case EWlanSecModeWAPI: + { + selected = 4; + break; + } + default: + { + User::Leave( KErrNotSupported ); + break; + } + } + + if ( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) == EInfra ) + { + if ( !FeatureManager::FeatureSupported( KFeatureIdFfWlanWapi ) ) + { + items = KSecModeRBIRSelectionItems; + } + else + { + items = KSecModeRBIRSelectionItemsWAPI; + } + } + else + { + items = KSecModeRBSelectionItems; + } + + TInt origVal = selected; + if ( ShowRadioButtonSettingPageL( items, + selected, + R_QTN_WLAN_SETT_SECURITY_MODE ) && + origVal != selected ) + { + if ( !iHasSettingChanged ) + { + iHasSettingChanged = ETrue; + } + + switch ( selected ) + { + case 0: + { + secMode = EWlanSecModeOpen; + break; + } + case 1: + { + secMode = EWlanSecModeWep; + break; + } + case 2: + { + secMode = EWlanSecMode802_1x; + break; + } + case 3: + { + secMode = EWlanSecModeWpa; + break; + } + case 4: + { + secMode = EWlanSecModeWAPI; + break; + } + default: + { + User::Leave( KErrNotSupported ); + break; + } + } + iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode , secMode ); + UpdateListBoxContentL(); + } + } + +//--------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ShowNetworkModeRBPageL +//--------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg:: ShowNetworkModeRBPageL() + { + const TUint32* items = KNetworkRBSelectionItems; + + TInt selected; + + // convert values to indices for UI + TInt netMode = iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ); + switch ( netMode ) + { + case EAdhoc: + { + selected = 1; + break; + } + case EInfra: + { + selected = 0; + break; + } + } + + TInt origVal = selected; + if ( ShowRadioButtonSettingPageL( items, + selected, + R_QTN_WLAN_SETT_NETWORK_MODE ) && + origVal != selected ) + { + // convert indices back to proper values + switch ( selected ) + { + case 0: + { + netMode = EInfra; + break; + } + case 1: + { + netMode = EAdhoc; + TInt secMode = iCmPluginBaseEng.GetIntAttributeL( + EWlanSecurityMode ); + if( secMode != EWlanSecModeOpen && + secMode != EWlanSecModeWep ) + { + iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode, + EWlanSecModeOpen ); + } + break; + } + default: + { + User::Leave( KErrNotSupported ); + break; + } + } + iCmPluginBaseEng.SetIntAttributeL( EWlanConnectionMode , netMode ); + UpdateListBoxContentL(); + } + } + +//--------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ShowWlanNWNamePageL +//--------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::ShowWlanNWNamePageL() + { + const TCmAttribConvTable* convItem = + iCmPluginBaseEng.ConvTableItem( EWlanSSID ); + + const TUint32* items = KNWNameSelectionItems; + TInt selected ( EWlanNwNameUserDefined ); + + // Display a radio button page with options: User defined and Scan for Networks + if ( ShowRadioButtonSettingPageL( items, + selected, + R_QTN_WLAN_SETT_NETWORK_NAME ) ) + { + if ( selected == EWlanNwNameUserDefined ) + { + HBufC* oldssId = iCmPluginBaseEng.GetStringAttributeL( EWlanSSID ); + CleanupStack::PushL( oldssId ); + + TBuf buf; + buf.Copy( *oldssId ); + + if ( TCmCommonUi::ShowConfirmationQueryWithInputL( + R_QTN_WLAN_PRMPT_NETWORK_NAME, + buf ) ) + { + if( buf.Compare( *oldssId ) ) + // SSID is changed + { + iCmPluginBaseEng.SetStringAttributeL( EWlanSSID, buf ); + UpdateListBoxContentL(); + } + } + CleanupStack::PopAndDestroy( oldssId ); + } + else + { + // Let's search for a WLAN network + TWlanSsid ssid; + TWlanConnectionMode connectionMode; + TWlanConnectionSecurityMode securityMode; + + CConnectionUiUtilities* uiUtils = CConnectionUiUtilities::NewL(); + CleanupStack::PushL( uiUtils ); + + if ( uiUtils->SearchWLANNetwork( ssid, connectionMode, securityMode ) ) + { + HBufC* temp = HBufC::NewLC( convItem->iMaxLength ); + temp->Des().Copy( ssid ); + iCmPluginBaseEng.SetStringAttributeL( EWlanSSID, *temp ); + CleanupStack::PopAndDestroy( temp ); + + UpdateListBoxContentL(); + } + CleanupStack::PopAndDestroy( uiUtils ); + } + } + } + +//--------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ShowPopupSettingPageL +//--------------------------------------------------------------------------- +// +TBool CmPluginWlanSettingsDlg::ShowPopupSettingPageL( TUint32 aAttribute, + TInt aCommandId ) + { + TBool retval = EFalse; + switch( aAttribute ) + { + // Boolean settings + case EWlanScanSSID: + { + ChangeBoolSettingL( aAttribute, aCommandId ); + break; + } + // Textual Settings + case ECmStartPage: + { + ShowPopupTextSettingPageL( aAttribute ); + break; + } + case EWlanSecurityMode: + { + ShowSecurityModeRBPageL(); + break; + } + case EWlanSecuritySettings: + { + TInt secmode = iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ); + if( secmode == EWlanSecModeOpen ) + { + TCmCommonUi::ShowNoteL( R_QTN_WLAN_INFO_NO_SECURITY_SETTINGS, + TCmCommonUi::ECmInfoNote); + } + else + { + TInt exitValue = + STATIC_CAST( CCmPluginWlan*, &iCmPluginBaseEng )-> + EditSecuritySettingsL( *( CEikonEnv::Static() ) ); + if ( secmode == EWlanSecModeWep ) + { // WEP + if ( exitValue & CWEPSecuritySettings::EExitReq ) + { + iSecDialExit = ETrue; + iExitReason = KDialogUserExit; + ExitSettingsL(EFalse); + } + } + else if ( secmode == EWlanSecModeWAPI ) + { + if ( exitValue & CWAPISecuritySettings::EExitReq ) + { + iSecDialExit = ETrue; + iExitReason = KDialogUserExit; + ExitSettingsL(EFalse); + } + } + else + {// 802.1x, WPA/WPA2 + if ( exitValue & CWPASecuritySettings::EExitReq ) + { + iSecDialExit = ETrue; + iExitReason = KDialogUserExit; + ExitSettingsL(EFalse); + } + } + } + break; + } + case EWlanConnectionMode: + { + if ( aCommandId == EPluginBaseCmdChange ) + { + ShowNetworkModeRBPageL(); + } + else + { + TInt netMode = + iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ); + // OK has been used: switch the value without opening the setting page + if ( netMode == EInfra ) + { + netMode = EAdhoc; + TInt secMode = iCmPluginBaseEng.GetIntAttributeL( + EWlanSecurityMode ); + if( secMode != EWlanSecModeOpen && + secMode != EWlanSecModeWep ) + { + iCmPluginBaseEng.SetIntAttributeL( EWlanSecurityMode, + EWlanSecModeOpen ); + } + } + else + { + netMode = EInfra; + } + iCmPluginBaseEng.SetIntAttributeL( EWlanConnectionMode, netMode ); + UpdateListBoxContentL(); + } + break; + } + case EWlanSSID: + { + ShowWlanNWNamePageL(); + break; + } + default: + { + CmPluginBaseSettingsDlg::ShowPopupSettingPageL( aAttribute, + aCommandId ); + break; + } + } + return retval; + } + + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ExitSettingsL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::ExitSettingsL( TBool aConfirm ) + { + if ( STATIC_CAST( CCmPluginWlan*, &iCmPluginBaseEng )-> + AreSecuritySettingsValidL() ) + { + if ( iIsPossibleToSaveSetting && iHasSettingChanged ) + { + iCmPluginBaseEng.UpdateL(); + iHasSettingChanged = EFalse; + } + TryExitL( iExitReason ); + } + else + { + HBufC* netwName = iCmPluginBaseEng.GetStringAttributeL( EWlanSSID ); + TBool noNetwName = ETrue; + CleanupStack::PushL( netwName ); + if ( *netwName != KNullDesC ) + { + noNetwName = EFalse; + } + CleanupStack::PopAndDestroy( netwName ); + + if ( noNetwName ) + { + if ( aConfirm ) + { + if ( TCmCommonUi::ShowConfirmationQueryL( + R_QTN_WLAN_QUEST_NW_NAME_NOT_DEFINED ) ) + { + iExitReason = KDialogUserDelete; + TryExitL( iExitReason ); + } + else + { + // Find the index of the EWlanSSID item + for ( TInt i = 0; i < iSettingIndex->Count(); i++ ) + { + if ( iSettingIndex->At(i) == EWlanSSID ) + { + SelectItem(i); + break; + } + } + } + } + else + { + TryExitL( iExitReason ); + } + } + else + { + if ( iCmPluginBaseEng.GetIntAttributeL( EWlanSecurityMode ) == + EWlanSecModeOpen ) + { + if ( iIsPossibleToSaveSetting && iHasSettingChanged) + { + iCmPluginBaseEng.UpdateL(); + iHasSettingChanged = EFalse; + } + TryExitL( iExitReason ); + } + else + { + if ( aConfirm ) + { + if ( TCmCommonUi::ShowConfirmationQueryL( + R_QTN_WLAN_QUEST_SECURITY_SETTINGS_EMPTY ) ) + { + iExitReason = KDialogUserDeleteConfirmed; + TryExitL( iExitReason ); + } + else + { + // Show the securitysettings page for WEP, other security mode + // is not supported here(WPA has a default value)... + ShowPopupSettingPageL( EWlanSecuritySettings, EWlanSecModeWep ); + } + } + else + { + TryExitL( iExitReason ); + } + } + } + } + } + + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::OkToExitL +// Good to know : EAknSoftkeyCancel is never called, because +// EEikDialogFlagNotifyEsc flag is not set in the resource. +// -------------------------------------------------------------------------- +// +TBool CmPluginWlanSettingsDlg::OkToExitL( TInt aButtonId ) + { + // Database has been changed by other application so exit from this view + // without update editings to database + if ( !iCanEditingContinue ) + { + if ( iExitReason == KDialogUserExit ) + { + iCmPluginBaseEng.CmMgr().WatcherUnRegister(); + + // Set iExitReason back to KDialogUserBack so as to exit from this view through else in the next call + TInt exitValue = KDialogUserExit; + iExitReason = KDialogUserBack; + // If destination has been deleted by other application + // then we may have to exit from Cmmgr + TryExitL( exitValue ); + return EFalse; + } + else + { + // Exit from this view here to avoid possible update to databse + return ETrue; + } + } + + // Translate the button presses into commands for the appui & current + // view to handle + TBool retval( EFalse ); + + switch ( aButtonId ) + { + case EAknSoftkeyOk: + case EAknSoftkeyChange: + { + ProcessCommandL( aButtonId ); + break; + } + case EAknSoftkeyBack: + { + ProcessCommandL( aButtonId ); + break; + } + case EAknSoftkeyOptions: + { + DisplayMenuL(); + break; + } + case KDialogUserExit: + { + if ( iSecDialExit ) + { + iSecDialExit = EFalse; + } + retval=ETrue; + break; + } + default: + { + retval = ETrue; + break; + } + } + + return retval; + } + + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::ProcessCommandL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::ProcessCommandL( TInt aCommandId ) + { + if ( !iCanEditingContinue ) + { + // We have to block all editing activity if database changed by + // other application + return; + } + + if ( MenuShowing() ) + { + HideMenu(); + } + + switch ( aCommandId ) + { + case EPluginBaseCmdExit: + { + iExitReason = KDialogUserExit; + } + case EAknSoftkeyBack: + { + CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); + cmMgr.WatcherUnRegister(); + + ExitSettingsL(ETrue); + break; + } + case EPluginBaseCmdAdvanced: + { + RunAdvancedSettingsL(); + break; + } + case EPluginBaseCmdChange: + case EAknSoftkeyOk: + { + TUint32 attrib = iSettingIndex->At( iListbox->CurrentItemIndex() ); + ShowPopupSettingPageL( attrib, aCommandId ); + break; + } + default: + { + CmPluginBaseSettingsDlg::ProcessCommandL( aCommandId ); + break; + } + } + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::GetHelpContext +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::GetHelpContext( TCoeHelpContext& aContext ) const + { + LOGGER_ENTERFN( "CmPluginWlanSettingsDlg::GetHelpContext" ); + aContext.iMajor = KHelpUidPlugin; + aContext.iContext = KSET_HLP_AP_SETTING_WLAN; + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::CommsDatChangesL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::CommsDatChangesL() + { + if ( !iCanEditingContinue ) + { + return; + } + + CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); + CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination(); + + if ( parentDest ) + { + if( !cmMgr.DestinationStillExistedL( parentDest ) ) + { + // If parent destination is deleted by somebody then the dialog must exit back to main view + iExitReason = KDialogUserExit; + iCanEditingContinue = EFalse; + + cmMgr.RemoveDestFromPool( parentDest ); + delete parentDest; + return; + } + + // We may have to go back to parent view if database is changed by other application + iCanEditingContinue = EFalse; + + cmMgr.RemoveDestFromPool( parentDest ); + delete parentDest; + } + else // Legacy + { + // We may have to go back to parent view if database is changed by other application + iCanEditingContinue = EFalse; + } + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::NotifyParentView +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::NotifyParentView( TInt aValue ) + { + iNotifyFromAdv = aValue; + } + +// -------------------------------------------------------------------------- +// CmPluginWlanSettingsDlg::HandleCommsDatChangeL +// -------------------------------------------------------------------------- +// +void CmPluginWlanSettingsDlg::HandleCommsDatChangeL() + { + if ( iCanEditingContinue ) + { + // Set iCanEditingContinue to False so that exit fromn this view without update editings + iCanEditingContinue = EFalse; + } + + if( iNotifyFromAdv == KCmNotifiedIapIsNotInThisDestination || + iNotifyFromAdv == KCmNotifiedIapDisappear ) + { + TryExitL( iExitReason ); + } + else if( iNotifyFromAdv == KCmNotifiedDestinationDisappear ) + { + iExitReason = KDialogUserExit; + TryExitL( iExitReason ); + } + }