diff -r fc7b30ed2058 -r 05bc53fe583b cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgadv.cpp --- a/cmmanager/cmmgr/Plugins/cmpluginwlan/src/cmpwlansettingsdlgadv.cpp Thu Aug 19 10:18:49 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,640 +0,0 @@ -/* -* 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 setting WLAN plugin advanced settings -* -*/ - -#include -#include -#include // for IP dialog -#include -#include -#include -#include -#include -#include - -#include "cmpluginwlan.h" -#include -#include "cmpwlansettingsdlgadv.h" -#include "cmpwlansettingsdlgipv4.h" -#include "cmpwlansettingsdlgipv6.h" -#include "cmwlancommonconstants.h" -#include -#include "cmpluginmenucommands.hrh" -#include -#include -#include "cmmanagerimpl.h" - -using namespace CMManager; - -const TUint32 KAdhocChannelSelectionItems[] = - { - R_QTN_WLAN_SETT_ADHOC_CHANNEL_AUTOMATIC, - R_QTN_WLAN_SETT_ADHOC_CHANNEL_USER_DEFINED, - 0 - }; - -// ================= MEMBER FUNCTIONS ========================================= - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::NewL() -// Two-phase dconstructor, second phase is ConstructAndRunLD -// -------------------------------------------------------------------------- -// -CmPluginWlanSettingsDlgAdv* CmPluginWlanSettingsDlgAdv::NewL( - CCmPluginBaseEng& aCmPluginBase ) - { - CmPluginWlanSettingsDlgAdv* self = - new (ELeave) CmPluginWlanSettingsDlgAdv( aCmPluginBase ); - return self; - } - - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ConstructAndRunLD -// Constructs the dialog and runs it. -// -------------------------------------------------------------------------- -// -TInt CmPluginWlanSettingsDlgAdv::ConstructAndRunLD( ) - { - // Set this flag to allow edit continue - iCanEditingContinue = ETrue; - - CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); - cmMgr.WatcherRegisterL( this ); - - return CmPluginBaseSettingsDlgAdv::ConstructAndRunLD(); - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::CmPluginWlanSettingsDlgAdv() -// -------------------------------------------------------------------------- -// -CmPluginWlanSettingsDlgAdv::CmPluginWlanSettingsDlgAdv( - CCmPluginBaseEng& aCmPluginBase ) : - CmPluginBaseSettingsDlgAdv( aCmPluginBase ), - iIpv6Supported( aCmPluginBase.FeatureSupported( KFeatureIdIPv6 ) ), - iParent( NULL ) - { - iHelpContext = KSET_HLP_AP_SETTING_WLAN_AS; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::~CmPluginWlanSettingsDlgAdv -// Destructor -// -------------------------------------------------------------------------- -// -CmPluginWlanSettingsDlgAdv::~CmPluginWlanSettingsDlgAdv() - { - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::UpdateListBoxContentBearerSpecificL -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv::UpdateListBoxContentBearerSpecificL( - CDesCArray& aItemArray ) - { - if ( iIpv6Supported ) - { - // IPV4 SETTINGS - AppendSettingTextsL( aItemArray, - ESettingPageCmdIpv4, - R_QTN_SET_IPV4_SETTINGS, - 0 ); - // IPV6 SETTINGS - AppendSettingTextsL( aItemArray, - ESettingPageCmdIpv6, - R_QTN_SET_IPV6_SETTINGS, - 0 ); - } - else - { - // PHONE IP ADDRESS - AppendSettingTextsL( aItemArray, EWlanIpAddr ); - HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr ); - TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr ); - delete ipAddr; ipAddr = NULL; - - if ( !isUnspec ) - { - // SUBNET MASK - AppendSettingTextsL( aItemArray, EWlanIpNetMask ); - // DEFAULT GATEWAY - AppendSettingTextsL( aItemArray, EWlanIpGateway ); - } - - // PRIMARY NAME SERVER - AppendSettingTextsL( aItemArray, EWlanIpNameServer1 ); - // SECONDARY NAME SERVER - AppendSettingTextsL( aItemArray, EWlanIpNameServer2 ); - } - - // AD-HOC CHANNEL - if ( iCmPluginBaseEng.GetIntAttributeL( EWlanConnectionMode ) == EAdhoc ) - { - AppendSettingTextsL( aItemArray, EWlanChannelID ); - } - - // PROXY SERVER ADDRESS - AppendSettingTextsL( aItemArray, ECmProxyServerName ); - // PROXY PORT NUMBER - AppendSettingTextsL( aItemArray, ECmProxyPortNumber ); -/* - TInt valResId(0); - // Allow SSID Roaming? - - TBool res = iCmPluginBaseEng.GetBoolAttributeL( EWlanAllowSSIDRoaming ); - if ( res ) - { - valResId = R_QTN_WLAN_SETT_SSID_ROAMING_ENABLED; - } - else - { - valResId = R_QTN_WLAN_SETT_SSID_ROAMING_DISABLED; - } - - AppendSettingTextsL( aItemArray, EWlanAllowSSIDRoaming, valResId ); -*/ - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ShowPopupSettingPageL -// -------------------------------------------------------------------------- -// -TBool CmPluginWlanSettingsDlgAdv::ShowPopupSettingPageL( TUint32 aAttribute, - TInt aCommandId ) - { - TBool retval = EFalse; - switch ( aAttribute ) - { - case EWlanIpAddr: - case EWlanIpNetMask: - case EWlanIpGateway: - case EWlanIpNameServer1: - case EWlanIpNameServer2: - { - ShowPopupIpSettingPageL( aAttribute ); - break; - } - case ESettingPageCmdIpv4: - { - ShowIpv4SettingPageL(); - break; - } - case ESettingPageCmdIpv6: - { - ShowIpv6SettingPageL(); - break; - } - case ECmProxyServerName: - { - retval = ShowPopupTextSettingPageL( aAttribute ); - break; - } - case ECmProxyPortNumber: - { - retval = ShowPopupPortNumSettingPageL( aAttribute ); - break; - } - case EWlanChannelID: // may not be correct - { - retval = ShowAdhocChannelSettingPageL(); - break; - } - case EWlanAllowSSIDRoaming: - { -// retval = ShowAdhocChannelSettingPageL(); - break; - } - default: - { - CmPluginBaseSettingsDlgAdv::ShowPopupSettingPageL( aAttribute, aCommandId ); - break; - } - } - return retval; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ShowIpv4SettingPageL -// -------------------------------------------------------------------------- -// -TBool CmPluginWlanSettingsDlgAdv::ShowIpv4SettingPageL() - { - TInt retVal( EFalse ); - CmPluginWlanSettingsDlgIpv4* ipv4Dlg = - CmPluginWlanSettingsDlgIpv4::NewL( iCmPluginBaseEng ); - - // This view may have to un-register as watcher here - CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); - cmMgr.WatcherUnRegister(); - - ipv4Dlg->RegisterParentView( this ); - TInt ret = ipv4Dlg->ConstructAndRunLD(); - - if( iNotifyFromIp == KCmNotifiedNone ) - { - if ( ret == KDialogUserExit ) - { - retVal = ETrue; - TryExitL( KDialogUserExit ); - } - else - { - // Re-register as watcher if advanced view comes back or exists normally - cmMgr.WatcherRegisterL( this ); - } - } - else - { - HandleCommsDatChangeL(); - } - - return retVal; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ShowIpv6SettingPageL -// -------------------------------------------------------------------------- -// -TBool CmPluginWlanSettingsDlgAdv::ShowIpv6SettingPageL() - { - TInt retVal( EFalse ); - CmPluginWlanSettingsDlgIpv6* ipv6Dlg = - CmPluginWlanSettingsDlgIpv6::NewL( iCmPluginBaseEng ); - - // This view may have to un-register as watcher here - CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); - cmMgr.WatcherUnRegister(); - - ipv6Dlg->RegisterParentView( this ); - TInt ret = ipv6Dlg->ConstructAndRunLD(); - - if( iNotifyFromIp == KCmNotifiedNone ) - { - if ( ret == KDialogUserExit ) - { - retVal = ETrue; - TryExitL( KDialogUserExit ); - } - else - { - // Re-register as watcher if advanced view comes back or exists normally - cmMgr.WatcherRegisterL( this ); - } - } - else - { - HandleCommsDatChangeL(); - } - - return retVal; - } - - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ShowAdhocChannelSettingPageL -// -------------------------------------------------------------------------- -// -TBool CmPluginWlanSettingsDlgAdv::ShowAdhocChannelSettingPageL() - { - TInt retVal( EFalse ); - const TCmAttribConvTable* convItem = - iCmPluginBaseEng.ConvTableItem( EWlanChannelID ); - const TUint32* items = KAdhocChannelSelectionItems; - TInt value = iCmPluginBaseEng.GetIntAttributeL( EWlanChannelID ); - - TInt selected = value ? EAdhocUserDefined : EAdhocAutomatic; - - // Show the dialog - if ( ShowRadioButtonSettingPageL( items, - selected, - R_QTN_WLAN_SETT_ADHOC_CHANNEL ) ) - { - // 'User defined' selected - if ( selected == EAdhocUserDefined ) - { - // if EWlanChannelID doesn't have a valid number, use the defaul - if ( value < KCmAdhocChannelMinValue || value > KCmAdhocChannelMaxValue ) - { - value = KCmAdhocChannelDefaultValue; - } - - TBool loop ( ETrue ); - - do - { - HBufC* buf = HBufC::NewLC( convItem->iMaxLength ); - TPtr ptr ( buf->Des() ); - ptr.AppendNum( value ); - - // Display a numeric query dialog - CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( ptr ); - - dlg->PrepareLC( R_NUMERIC_QUERY ); - dlg->SetMaxLength( convItem->iMaxLength ); - dlg->SetDefaultInputMode( EAknEditorNumericInputMode ); - dlg->MakeLeftSoftkeyVisible( EFalse ); - - HBufC* prompt = StringLoader::LoadLC( - R_QTN_WLAN_PRMPT_ADHOC_CHANNEL ); - dlg->SetPromptL( *prompt ); - CleanupStack::PopAndDestroy( prompt ); - - // Show the popup - if ( dlg->RunLD() ) - { - TLex lex ( ptr ); - lex.Val( value ); - - // Check valid limits - if ( value >= KCmAdhocChannelMinValue && - value <= KCmAdhocChannelMaxValue ) - { - // set result - iCmPluginBaseEng.SetIntAttributeL( EWlanChannelID, value ); - loop = EFalse; - UpdateListBoxContentL(); - retVal = ETrue; - } - else - { - value = value < KCmAdhocChannelMinValue ? - KCmAdhocChannelMinValue : - KCmAdhocChannelMaxValue; - } - } - else - { - loop = EFalse; - } - CleanupStack::PopAndDestroy( buf ); - } while ( loop ); - } - else - { - iCmPluginBaseEng.SetIntAttributeL( EWlanChannelID, EAdhocAutomatic ); - UpdateListBoxContentL(); - retVal = ETrue; - } - } - - return retVal; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::ProcessCommandL -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv:: 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(); - - HBufC* ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpAddr ); - TBool isUnspec = IsUnspecifiedIPv4Address( *ipAddr ); - delete ipAddr; ipAddr = NULL; - - if ( !isUnspec ) - { - ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpNetMask ); - TBool isUnspec1 = IsUnspecifiedIPv4Address( *ipAddr ); - delete ipAddr; - ipAddr = iCmPluginBaseEng.GetStringAttributeL( EWlanIpGateway ); - TBool isUnspec2 = IsUnspecifiedIPv4Address( *ipAddr ); - delete ipAddr; - - if ( isUnspec1 || isUnspec2 ) - { - if ( TCmCommonUi::ShowConfirmationQueryL( - R_QTN_NETW_QUEST_IAP_INCOMPLETE_DELETE ) ) - { - iCmPluginBaseEng.RestoreAttributeL( EWlanIpAddr ); - iCmPluginBaseEng.RestoreAttributeL( EWlanIpNetMask ); - iCmPluginBaseEng.RestoreAttributeL( EWlanIpGateway ); - iCmPluginBaseEng.RestoreAttributeL( EWlanIpDNSAddrFromServer ); - TryExitL( iExitReason ); - } - } - else - { - TryExitL( iExitReason ); - } - } - else - { - TryExitL( iExitReason ); - } - break; - } - case EAknSoftkeyOk: - case EPluginBaseCmdChange: - { - ShowPopupSettingPageL( - iSettingIndex->At( iListbox->CurrentItemIndex() ), - aCommandId ); - break; - } - default: - { - CmPluginBaseSettingsDlgAdv::ProcessCommandL( aCommandId ); - break; - } - } - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::OkToExitL -// Good to know : EAknSoftkeyCancel is never called, because -// EEikDialogFlagNotifyEsc flag is not set in the resource. -// -------------------------------------------------------------------------- -// -TBool CmPluginWlanSettingsDlgAdv::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; - } - default: - { - retval = ETrue; - break; - } - } - - return retval; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::RegisterParentView -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv::RegisterParentView( CCmParentViewNotifier* aParent ) - { - iParent = aParent; - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::CommsDatChangesL -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv::CommsDatChangesL() - { - if ( !iCanEditingContinue ) - { - return; - } - - CCmManagerImpl& cmMgr = iCmPluginBaseEng.CmMgr(); - CCmDestinationImpl* parentDest = iCmPluginBaseEng.ParentDestination(); - - if ( parentDest ) - { - if( !cmMgr.DestinationStillExistedL( parentDest ) ) - { - if( iParent ) - { - iParent->NotifyParentView( KCmNotifiedDestinationDisappear ); - } - - // 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 - if( iParent ) - { - iParent->NotifyParentView( KCmNotifiedIapDisappear ); - } - 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 - if( iParent ) - { - iParent->NotifyParentView( KCmNotifiedIapDisappear ); - } - iCanEditingContinue = EFalse; - } - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::NotifyParentView -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv::NotifyParentView( TInt aValue ) - { - iNotifyFromIp = aValue; - - if( iParent ) - { - iParent->NotifyParentView( aValue ); - } - } - -// -------------------------------------------------------------------------- -// CmPluginWlanSettingsDlgAdv::HandleCommsDatChangeL -// -------------------------------------------------------------------------- -// -void CmPluginWlanSettingsDlgAdv::HandleCommsDatChangeL() - { - if ( iCanEditingContinue ) - { - // Set iCanEditingContinue to False so that exit fromn this view without update editings - iCanEditingContinue = EFalse; - } - - if( iNotifyFromIp == KCmNotifiedIapIsNotInThisDestination || - iNotifyFromIp == KCmNotifiedIapDisappear ) - { - TryExitL( iExitReason ); - } - else if( iNotifyFromIp == KCmNotifiedDestinationDisappear ) - { - iExitReason = KDialogUserExit; - TryExitL( iExitReason ); - } - }