diff -r 9f4e37332ce5 -r 473321461bba vpnui/vpnmanagementui/src/vpnmanagementuiserversettingscontainer.cpp --- a/vpnui/vpnmanagementui/src/vpnmanagementuiserversettingscontainer.cpp Thu Aug 19 10:54:34 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,374 +0,0 @@ -/* -* Copyright (c) 2003-2009 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: The container is responsible of showing policy server details. -* -*/ - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include "vpnuiloader.h" -#include "vpnmanagementuiserversettingscontainer.h" -#include "vpnmanagementuidefs.h" -#include "serversettingconnectionsettingitem.h" -#include "vpnmanagementui.hrh" -#include "log_vpnmanagementui.h" - - -#ifdef __SERIES60_HELP -#include // for help context of VPN Management UI -#endif //__SERIES60_HELP - -using namespace CMManager; - -// ================= MEMBER FUNCTIONS ======================= - -CServerSettingsContainer* CServerSettingsContainer::NewL( - CVpnUiLoader& aLoader, TInt aServerIndex ) - { - CServerSettingsContainer* self = new(ELeave) CServerSettingsContainer( - aLoader, aServerIndex ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------- -// CServerSettingsContainer::CServerSettingsContainer() -// --------------------------------------------------------- -// -CServerSettingsContainer::CServerSettingsContainer( - CVpnUiLoader& aLoader, TInt aServerIndex ) - :iLoader(aLoader), iServerIndex(aServerIndex) - { - ASSERT(aServerIndex >= KErrNotFound); - } - -// --------------------------------------------------------- -// CServerSettingsContainer::~CServerSettingsContainer() -// Destructor -// --------------------------------------------------------- -// -CServerSettingsContainer::~CServerSettingsContainer() - { - } - - -// --------------------------------------------------------------------------- -// CreateSettingItemL -// --------------------------------------------------------------------------- -// -CAknSettingItem* CServerSettingsContainer::CreateSettingItemL( - TInt aSettingId ) - { - CAknSettingItem* settingItem(NULL); - - switch (aSettingId) - { - case EVpnUiSettingServerName: - settingItem = new (ELeave) CAknTextSettingItem( - aSettingId, iServerDetails.iServerNameLocal ); - break; - case EVpnUiSettingServerAddress: - if (iServerDetails.iServerUrl.Length() > 0) - { - iServerAddressBuffer.Copy(iServerDetails.iServerUrl); - } - settingItem = new (ELeave) CAknTextSettingItem( - aSettingId, iServerAddressBuffer ); - break; - case EVpnUiSettingIap: - if ( iServerDetails.iSelection.iId <1 ) - { - RCmManagerExt cmManagerExt; - cmManagerExt.OpenL(); - CleanupClosePushL( cmManagerExt ); - - //Makes sure that Internet Destination Exists - RArray destinationArray; - cmManagerExt.AllDestinationsL( destinationArray ); - CleanupClosePushL(destinationArray); - - TUint32 internetDestinationId = 0; - for (TInt i = 0; i < destinationArray.Count(); ++i) - { - RCmDestinationExt destination = cmManagerExt.DestinationL( destinationArray[i] ); - CleanupClosePushL(destination); - - TUint32 purposeMetaData = destination.MetadataL( ESnapMetadataPurpose ); - if ( ESnapPurposeInternet == purposeMetaData ) - { - internetDestinationId = destinationArray[i]; - CleanupStack::PopAndDestroy(); //destination - break; - } - CleanupStack::PopAndDestroy(); //destination - } - - iServerDetails.iSelection.iId = internetDestinationId; - - iServerDetails.iSelection.iResult=EDestination; - - - settingItem = new (ELeave) CServerSettingConnectionSettingItem( - aSettingId, iServerDetails.iSelection); - CleanupStack::PopAndDestroy(2); //destinationArray,cmManagerExt - - } - else - settingItem = new (ELeave) CServerSettingConnectionSettingItem( - aSettingId, iServerDetails.iSelection); - break; - default: - // Do nothing - break; - } - - return settingItem; - } - - -// --------------------------------------------------------------------------- -// CServerSettingsContainer::ConstructL() -// --------------------------------------------------------------------------- -// -void CServerSettingsContainer::ConstructL() - { - // Server settings view sets iServerIndex to -1 when creating a new - // server - if ( iServerIndex >= 0 ) - { - iLoader.VpnApiWrapperL().GetServerDetailsL( iServerDetails ); - UpdateTitleL( iServerDetails.iServerNameLocal ); - } - ConstructFromResourceL(R_VPN_SERVER_SETTING_LIST); - CAknSettingItem* item = SettingItemArray()->At(EVpnUiSettingIap); - - using namespace CMManager; - - RCmManagerExt cmManagerExt; - cmManagerExt.OpenL(); - CleanupClosePushL( cmManagerExt ); - - //Makes sure that Internet Destination Exists - RArray destinationArray; - cmManagerExt.AllDestinationsL( destinationArray ); - CleanupClosePushL(destinationArray); - TBool internetIapExist=EFalse; - TUint32 internetDestinationId = 0; - for (TInt i = 0; i < destinationArray.Count(); ++i) - { - RCmDestinationExt destination = cmManagerExt.DestinationL( destinationArray[i] ); - CleanupClosePushL(destination); - - TUint32 purposeMetaData = destination.MetadataL( ESnapMetadataPurpose ); - if ( ESnapPurposeInternet == purposeMetaData ) - { - internetDestinationId = destinationArray[i]; - CleanupStack::PopAndDestroy(); //destination - internetIapExist=ETrue; - break; - } - CleanupStack::PopAndDestroy(); //destination - } - - if ( internetIapExist != EFalse) - { - HBufC* defaultConn = GetDestinationNameL(internetDestinationId); - CleanupStack::PushL(defaultConn); - item->SetEmptyItemTextL(*defaultConn); - item->LoadL(); - item->UpdateListBoxTextL(); - CleanupStack::PopAndDestroy(defaultConn); - } - - CleanupStack::PopAndDestroy(); //destinationArray - CleanupStack::PopAndDestroy(); //cmManagerExt - } - - -// --------------------------------------------------------------------------- -// UpdateTitleL -// --------------------------------------------------------------------------- -// -void CServerSettingsContainer::UpdateTitleL( TDes& aText ) - { - iLoader.ActivateTitleL(KViewTitleParametersView,aText); - } - - -void CServerSettingsContainer::HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType) - { - switch(aEventType) - { - case EEventEnterKeyPressed: - case EEventItemSingleClicked: - ChangeSettingValueL(); - break; - default: - CAknSettingItemList::HandleListBoxEventL(aListBox, aEventType); - } - } - - -// --------------------------------------------------------------------------- -// ChangeSettingValueL -// --------------------------------------------------------------------------- -// -void CServerSettingsContainer::ChangeSettingValueL() - { - - TInt currentItem( ListBox()->CurrentItemIndex() ); - - switch(currentItem) - { - case EVpnUiSettingServerName: - { - EditItemL(EVpnUiSettingServerName, ETrue); - SettingItemArray()->At(EVpnUiSettingServerName)->StoreL(); - } - if (iServerDetails.iServerNameLocal.Length() > 0) - { - UpdateTitleL( iServerDetails.iServerNameLocal ); - } - - break; - case EVpnUiSettingServerAddress: - { - EditItemL(EVpnUiSettingServerAddress, ETrue); - } - break; - case EVpnUiSettingIap: - { - EditItemL(EVpnUiSettingIap, ETrue); - } - break; - default: - User::Invariant(); - break; - } - } - - - -const TAgileProvisionApiServerSettings& CServerSettingsContainer::ServerDetailsL() - { - StoreSettingsL(); - if (iServerAddressBuffer.Length() > 0) - { - iServerDetails.iServerUrl.Copy(iServerAddressBuffer); - } - - //If server name is left empty, but we have an address, - //set address as a server name. - if (iServerDetails.iServerNameLocal.Length() == 0 && - iServerDetails.iServerUrl.Length() > 0) - { - - //If the address is already in use as server name, generate - //a new unique name. - TUint16 i = 1; - static const TInt KSuffixLength = 10; - _LIT(KSuffixFormat, "(%d)"); - - TBuf suffix; - suffix.Zero(); - if (i > 1) - { - suffix.Format(KSuffixFormat, i); - } - i++; - - //First assumes that the address is too long to fit - TInt numberOfCharactersCopiedFromAddress = - iServerDetails.iServerNameLocal.MaxLength() - suffix.Length(); - - //If this is not the case adjust the length - if (numberOfCharactersCopiedFromAddress > iServerDetails.iServerUrl.Length()) - { - numberOfCharactersCopiedFromAddress = iServerDetails.iServerUrl.Length(); - } - - TPtrC8 serverNameAddress = iServerDetails.iServerUrl.Left(numberOfCharactersCopiedFromAddress); - iServerDetails.iServerNameLocal.Copy(serverNameAddress); - iServerDetails.iServerNameLocal.Append(suffix); - - CAknSettingItem* item = SettingItemArray()->At(EVpnUiSettingServerName); - - item->LoadL(); - item->UpdateListBoxTextL(); - } - return iServerDetails; - } - - -// --------------------------------------------------------------------------- -// GetIapNameL -// --------------------------------------------------------------------------- -// -HBufC* CServerSettingsContainer::GetDestinationNameL( TUint aId ) - { - RCmManagerExt cmManager; - cmManager.OpenLC(); - RCmDestinationExt dest = cmManager.DestinationL( aId ); - CleanupClosePushL( dest ); - HBufC* name = dest.NameLC(); - CleanupStack::Pop(name); - CleanupStack::PopAndDestroy( 2 ); // dest, cmManager - return name; - } - - -HBufC* CServerSettingsContainer::GetConnectionMethodNameL( TUint aId ) - { - RCmManagerExt cmManager; - cmManager.OpenLC(); - RCmConnectionMethodExt conn = cmManager.ConnectionMethodL( aId ); - CleanupClosePushL( conn ); - HBufC* name = conn.GetStringAttributeL( ECmName ); - CleanupStack::PopAndDestroy( 2 ); // conn, cmManager - return name; - } - - -TInt CServerSettingsContainer::ServerIndex() const - { - return iServerIndex; - } - - -// --------------------------------------------------------- -// CServerSettingsContainer::GetHelpContext -// --------------------------------------------------------- - -#ifdef __SERIES60_HELP -void CServerSettingsContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - aContext.iMajor = KUidVpnManagementUi; - aContext.iContext = KSET_HLP_VPN_POLICY_SERVER_SET; - } -#endif //__SERIES60_HELP - - -// End of File