/***************************************************************************
*   Copyright (C) 2004 by Christoph Thielecke                             *
*   crissi99@gmx.de                                                       *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
*   This program is distributed in the hope that it will be useful,       *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
*   GNU General Public License for more details.                          *
*                                                                         *
*   You should have received a copy of the GNU General Public License     *
*   along with this program; if not, write to the                         *
*   Free Software Foundation, Inc.,                                       *
*   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
***************************************************************************/
//BEGIN INCLUDES

#include <klocale.h>
#include <qlabel.h>
#include <qhbox.h>
#include <qvbox.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <klineedit.h>
#include <qlineedit.h>
#include <kmessagebox.h>
#include <kcombobox.h>
#include <kurlrequester.h>
#include <knuminput.h>
#include <kpassdlg.h>
#include <kfiledialog.h>
#include <qspinbox.h>
#include <qcursor.h>
#include <qbuttongroup.h>
#include <iostream>

#include <kstddirs.h>
#include <kinputdialog.h>

#include "kvpncconfig.h"
#include "networkinterface.h"
#include "newprofilewizard.h"
#include "addnetworkroutedialog.h"
#include "utils.h"
//END INCLUDES

NewProfileWizard::NewProfileWizard ( KVpncConfig* GlobalConfig )
{
	this->GlobalConfig = GlobalConfig;

	newProfileCreated = false;
	setCaption ( i18n ( "Add new profile..." ) );
	//setMinimumSize( 400,300);

	SetupPixmap = new QPixmap ( locate ( "data", "kvpnc/newprofilewizard.png" ) );
	SetupPixmapFinal = new QPixmap ( locate ( "data", "kvpnc/newprofilewizard_final.png" ) );

	// currently static for new profile
	VpnAccountData::ConnectionType ConnType = VpnAccountData::ConnectionType ( VpnAccountData::other );
	Port = 500;
	Gateway = "";
	ID = "";
	Username = "";
	UserPassword = "";
	PreSharedKey = "";
	ApplicationVersion = "";
	NtDomainName = "";
	PerfectForwardSecrecy = "";
	IkeGroup = "";
	Description = "";
	Name = "None";
	useApplicationVersion = false;
	useGlobalIpsecSecret = false;
	useIkeGroup = false;
	useLocalPort = false;
	useNtDomainName = false;
	useSingleDes = false;
	useAdvancedSettings = false;
	usePerfectSecrecy = false;
	saveUserPassword = false;
	savePsk = false;
	useUdp = false;
	useUdpPort = false;
	useDnsServer = false;
	DnsServer = "";
	useGetDnsFromPeer = true;
	refuse40BitEncryption = true;
	refuse128BitEncryption = false;
	allowStatefulMode = false;
	requireMppe = true;
	useNoBsdComp = true;
	useNoDeflate = true;
	savePsk = false;
	connectaftercreating = true;
	daemonavailable = false;
	enterdatamanually = false;
	importOK = false;

	currentpage = 0;
	previouspage = 0;

	profileData = new VpnAccountData ( ConnType, Name );
	profileData->setGateway ( Gateway );
	profileData->setID ( ID );
	profileData->setPreSharedKey ( PreSharedKey );
	profileData->setSavePsk ( savePsk );
	profileData->setUserName ( Username );
	profileData->setUserPassword ( UserPassword );
	profileData->setSaveUserPassword ( saveUserPassword );
	profileData->setSavePsk ( savePsk );
	profileData->setApplicationVersion ( ApplicationVersion );
	profileData->setUseLocalPort ( useLocalPort );
	profileData->setLocalPort ( Port );
	profileData->setUseSingleDes ( useSingleDes );
	profileData->setPerfectForwardSecrety ( PerfectForwardSecrecy );
	profileData->setIkeGroup ( IkeGroup );
	profileData->setUseGlobalIpsecSecret ( useGlobalIpsecSecret );
	profileData->setUseIkeGroup ( useIkeGroup );
	profileData->setNtDomainName ( NtDomainName );
	profileData->setUseAdvancedSettings ( useAdvancedSettings );
	profileData->setUsePerfectForwardSecrety ( usePerfectSecrecy );
	profileData->setUseTlsAuth ( false );

	setupPages();

	// 	// tmp
	// 	newprofilewizardtypeselectionpagecontent->FreeswanRadioButton->setEnabled(false);
	// 	newprofilewizardtypeselectionpagecontent->RacoonRadioButton->setEnabled(false);
}

void NewProfileWizard::accept()
{

	if ( !enterdatamanually )
	{
		if ( profileData->getConnectionType() == VpnAccountData::cisco )
		{
// 			importProfile( VpnAccountData::cisco );
// 			if ( importOK )
// 				newProfileCreated = true;
// 			else
// 				newProfileCreated = false;
		}
	}
	else
	{
		newProfileCreated = true;
	}
	finished = true;

	if ( newProfileCreated && profileData->getAuthType() == VpnAccountData::cert )
		{}

	QWizard::accept();
}

void NewProfileWizard::reject()
{
	finished = false;
	QWizard::reject();
}

void NewProfileWizard::setupPages()
{

	// setup start page
	page1 = new QHBox ( 0 );
	// 	page1->setSpacing(8);
	QLabel *setupPixmapContent1 = new QLabel ( page1 );
	setupPixmapContent1->setPixmap ( *SetupPixmap );
	setupPixmapContent1->resize ( setupPixmapContent1->sizeHint() );
	newprofilewizardstartcontent = new NewProfileWizardStart ( page1 );
	newprofilewizardstartcontent->resize ( newprofilewizardstartcontent->sizeHint() );
	page1->sizeHint();
	addPage ( page1, "<b>" + i18n ( "Welcome" ) + "</b>" );

	// type selection
	newprofilewizardtypeselectionpage = new QHBox ( 0 );
	// 	newprofilewizardtypeselectionpage->setSpacing(8);
	QLabel *setupPixmapContent2 = new QLabel ( newprofilewizardtypeselectionpage );
	setupPixmapContent2->setPixmap ( *SetupPixmap );
	setupPixmapContent2->resize ( setupPixmapContent2->sizeHint() );
	newprofilewizardtypeselectionpagecontent = new NewProfileWizardTypeSelection ( newprofilewizardtypeselectionpage );
	newprofilewizardtypeselectionpagecontent->FreeswanRadioButton->setText ( i18n ( "IPSec (%1)" ).arg ( "FreeS/WAN/Openswan/strongSwan" ) );
	newprofilewizardtypeselectionpagecontent->L2tpFreeswanRadioButton->setText ( i18n ( "L2TP over IPSec (%1)" ).arg ( "FreeS/WAN/Openswan/strongSwan" ) );
	newprofilewizardtypeselectionpage->sizeHint();
	addPage ( newprofilewizardtypeselectionpage, "<b>" + i18n ( "Type selection" ) + "</b>" );

	// cisco
	newprofilewizardciscoselectionpage = new QHBox ( 0 );
	// 	newprofilewizardciscoselectionpage->setSpacing(8);
	QLabel *setupPixmapContent3 = new QLabel ( newprofilewizardciscoselectionpage );
	setupPixmapContent3->setPixmap ( *SetupPixmap );
	setupPixmapContent3->resize ( setupPixmapContent3->sizeHint() );
	newprofilewizardciscoselectionpagecontent = new NewProfileWizardCiscoSelection ( newprofilewizardciscoselectionpage );
	newprofilewizardciscoselectionpage->sizeHint();

	newprofilewizardciscomanuallypage = new QHBox ( 0 );
	// 	newprofilewizardciscomanuallypage->setSpacing(8);
	QLabel *setupPixmapContent4 = new QLabel ( newprofilewizardciscomanuallypage );
	setupPixmapContent4->setPixmap ( *SetupPixmap );
	setupPixmapContent4->resize ( setupPixmapContent4->sizeHint() );
	newprofilewizardciscomanuallypagecontent = new NewProfileWizardCiscoManually ( newprofilewizardciscomanuallypage );
	newprofilewizardciscomanuallypage->sizeHint();

	connect ( newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit , SIGNAL ( textChanged ( const QString& ) ), this, SLOT ( pskToggled ( const QString& ) ) );

	// racoon
	newprofilewizardracoonpage = new QHBox ( 0 );
	// 	newprofilewizardracoonpage->setSpacing(8);
	QLabel *setupPixmapContent5 = new QLabel ( newprofilewizardracoonpage );
	setupPixmapContent5->setPixmap ( *SetupPixmap );
	setupPixmapContent5->resize ( setupPixmapContent5->sizeHint() );
	newprofilewizardracoonpagecontent = new NewProfileWizardRacoon ( newprofilewizardracoonpage );
	newprofilewizardracoonpagecontent->ExchangeModeComboBox->insertItem ( "main", 0 );
	newprofilewizardracoonpagecontent->ExchangeModeComboBox->insertItem ( "aggressive", 1 );
	newprofilewizardracoonpagecontent->ExchangeModeComboBox->insertItem ( "base", 2 );
	newprofilewizardracoonpagecontent->ExchangeModeComboBox->setCurrentItem ( 0 ); // main

	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem ( "SHA1" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem ( "MD5" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->setCurrentItem ( 0 ); //SHA1

	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp768" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp1024" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "ec2n155" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "ec2n185" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp1536" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp2048" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp3072" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp4096" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp6144" );
	newprofilewizardracoonpagecontent->DHGroupComboBox->insertItem ( "modp8192" );

	newprofilewizardracoonpagecontent->LocalIdTypeCombobox->insertItem ( "asn1dn" );
	newprofilewizardracoonpagecontent->LocalIdTypeCombobox->insertItem ( "address" );
	newprofilewizardracoonpagecontent->LocalIdTypeCombobox->insertItem ( "fqdn" );
	newprofilewizardracoonpagecontent->LocalIdTypeCombobox->insertItem ( "keyid" );
	newprofilewizardracoonpagecontent->LocalIdTypeCombobox->insertItem ( "user_fqdn" );

	newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->insertItem ( "asn1dn" );
	newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->insertItem ( "address" );
	newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->insertItem ( "fqdn" );
	newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->insertItem ( "keyid" );
	newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->insertItem ( "user_fqdn" );

	newprofilewizardracoonpagecontent->PerfectForwardSecurityCheckbox->setChecked(true);
	newprofilewizardracoonpagecontent->PerfectForwardSecrecyCombobox->setCurrentText("modp2048");



	connect ( newprofilewizardracoonpagecontent->LocalIdTypeCombobox, SIGNAL ( highlighted ( const QString& ) ), this, SLOT ( localIDTypeToggled ( const QString& ) ) );
	connect ( newprofilewizardracoonpagecontent->RemoteIdTypeCombobox, SIGNAL ( highlighted ( const QString& ) ), this, SLOT ( remoteIDTypeToggled ( const QString& ) ) );
	connect ( newprofilewizardracoonpagecontent->IkeGroupCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( ikeGroupToggled ( bool ) ) );
	connect ( newprofilewizardracoonpagecontent->UseXauthCheckBox, SIGNAL(toggled(bool)),this, SLOT(useXauthRacoonToggled(bool)));

	Utils::IpsecAlgos KernelCrypto = Utils ( GlobalConfig ).getKernelCrypto();

	// man racoon.conf
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("des" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("3des" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("blowfish" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("cast128" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("aes" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("camellia" );

	// man racoon.conf
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "md5" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha1" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha256" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha384" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha512" );




//  	// phase 2 encr algos from kernel
// 	for ( QStringList::Iterator it = KernelCrypto.IpsecEspEncryptionAlgorithms.begin(); it != KernelCrypto.IpsecEspEncryptionAlgorithms.end(); ++it )
// 	{
// 		newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem ( *it );
// 	}
// 
// 	// phase 2 auth algos from kernel
// 	for ( QStringList::Iterator it = KernelCrypto.IpsecEspAuthenticationAlgorithms.begin(); it != KernelCrypto.IpsecEspAuthenticationAlgorithms.end(); ++it )
// 	{
// 		newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem ( *it );
// 	}

	// vpn mit linux book
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("3des" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des_iv64" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des_iv32" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rc5" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rc4" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("idea" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("3idea" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("cast128" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("blowfish" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("null_enc" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("twofish" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rijndael" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("aes" );

	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "3des" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv64" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv32" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_md5" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha1" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha256" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha384" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha512" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "non_auth" );


	// FIXME save not implemented yet
	newprofilewizardracoonpagecontent->PerfectForwardSecurityCheckbox->hide();
	newprofilewizardracoonpagecontent->PerfectForwardSecrecyCombobox->hide();

	newprofilewizardracoonpage->sizeHint();

	//freeswan
	newprofilewizardfreeswanselectionpage = new QHBox ( 0 );
	// 	newprofilewizardfreeswanselectionpage->setSpacing(8);
	QLabel *setupPixmapContent711 = new QLabel ( newprofilewizardfreeswanselectionpage );
	setupPixmapContent711->setPixmap ( *SetupPixmap );
	setupPixmapContent711->resize ( setupPixmapContent711->sizeHint() );
	newprofilewizardfreeswanselectionpagecontent	 = new NewProfileWizardOpenvpnSelection ( newprofilewizardfreeswanselectionpage );
	newprofilewizardfreeswanselectionpagecontent->OpenvpnImportRadioButton->setText(i18n("Import &Ipsec config file"));
	newprofilewizardfreeswanselectionpage->sizeHint();

	newprofilewizardfreeswanpage = new QHBox ( 0 );
	// 	newprofilewizardfreeswanpage->setSpacing(8);
	QLabel *setupPixmapContent6 = new QLabel ( newprofilewizardfreeswanpage );
	setupPixmapContent6->setPixmap ( *SetupPixmap );
	setupPixmapContent6->resize ( setupPixmapContent6->sizeHint() );
	newprofilewizardfreeswanpagecontent = new NewProfileWizardFreeswan ( newprofilewizardfreeswanpage );
	newprofilewizardfreeswanpage->sizeHint();

	//freeswan
	newprofilewizardfreeswanpage = new QHBox ( 0 );
	// 	newprofilewizardfreeswanpage->setSpacing(8);
	QLabel *setupPixmapContent66 = new QLabel ( newprofilewizardfreeswanpage );
	setupPixmapContent66->setPixmap ( *SetupPixmap );
	setupPixmapContent66->resize ( setupPixmapContent66->sizeHint() );
	newprofilewizardfreeswanpagecontent = new NewProfileWizardFreeswan ( newprofilewizardfreeswanpage );

	newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->insertItem ( "asn1dn" );
	newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->insertItem ( "address" );
	newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->insertItem ( "fqdn" );
	newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->insertItem ( "keyid" );
	newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->insertItem ( "user_fqdn" );

	newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->insertItem( "transport" );
	newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->insertItem( "tunnel" );

	newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->setCurrentItem(1);
	newprofilewizardfreeswanpagecontent->DisableOpportunisticEncryptionCheckBox->setChecked(true);
	newprofilewizardfreeswanpagecontent->UseModeConfigCheckBox->hide();
	newprofilewizardfreeswanpagecontent->PerfectForwardSecurityCheckbox->setChecked(true);

	connect ( newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox, SIGNAL ( highlighted ( const QString& ) ), this, SLOT ( localIDTypeIpsecToggled ( const QString& ) ) );

	connect( newprofilewizardfreeswanpagecontent->UseCustomEspCheckBox, SIGNAL( toggled(bool) ), this, SLOT( useEspToogled(bool) ) );
	connect( newprofilewizardfreeswanpagecontent->UseCustomIkeCheckBox, SIGNAL( toggled(bool) ), this, SLOT( useIkeToggled(bool) ) );
	connect( newprofilewizardfreeswanpagecontent->UseLeftNextHopCheckBox, SIGNAL( toggled(bool) ), this, SLOT( useLeftNextHopToggled(bool) ) );
	connect( newprofilewizardfreeswanpagecontent->UseRightNextHopCheckBox, SIGNAL( toggled(bool) ), this, SLOT( useRightNextHopToggled(bool) ) );
	connect( newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox, SIGNAL( activated(const QString&) ), this, SLOT( localIDTypeIpsecToggled(const QString&) ) );
	connect (newprofilewizardfreeswanpagecontent->UseXauthCheckBox, SIGNAL(toggled(bool)),this, SLOT(useXauthFreeswanToggled(bool)));

	newprofilewizardfreeswanpage->sizeHint();

	// openvpn
	newprofilewizardopenvpnselectionpage = new QHBox ( 0 );
	// 	newprofilewizardopenvpnselectionpage->setSpacing(8);
	QLabel *setupPixmapContent7 = new QLabel ( newprofilewizardopenvpnselectionpage );
	setupPixmapContent7->setPixmap ( *SetupPixmap );
	setupPixmapContent7->resize ( setupPixmapContent7->sizeHint() );
	newprofilewizardopenvpnselectionpagecontent = new NewProfileWizardOpenvpnSelection ( newprofilewizardopenvpnselectionpage );
	newprofilewizardopenvpnselectionpage->sizeHint();

	newprofilewizardopenvpnauthpage = new QHBox ( 0 );
	// 	newprofilewizardopenvpnauthpage->setSpacing(8);
	QLabel *setupPixmapContent71 = new QLabel ( newprofilewizardopenvpnauthpage );
	setupPixmapContent71->setPixmap ( *SetupPixmap );
	setupPixmapContent71->resize ( setupPixmapContent71->sizeHint() );
	newprofilewizardopenvpnauthpagecontent = new NewProfileWizardOpenvpnAuth ( newprofilewizardopenvpnauthpage );
	newprofilewizardopenvpnauthpage->sizeHint();
	connect ( newprofilewizardopenvpnauthpagecontent->AuthWithUsernameAndPasswordCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( authenticateWithUsernameAndPasswordToggled ( bool ) ) );
	connect ( newprofilewizardopenvpnauthpagecontent->UseAuthenticationAlgorithmCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useAuthenticationAlgorithmToggled ( bool ) ) );

	newprofilewizardopenvpnpage = new QHBox ( 0 );
	// 	newprofilewizardopenvpnpage->setSpacing(8);
	QLabel *setupPixmapContent8 = new QLabel ( newprofilewizardopenvpnpage );
	setupPixmapContent8->setPixmap ( *SetupPixmap );
	setupPixmapContent8->resize ( setupPixmapContent8->sizeHint() );
	newprofilewizardopenvpnpagecontent = new NewProfileWizardOpenvpn ( newprofilewizardopenvpnpage );
	newprofilewizardopenvpnpage->sizeHint();
	newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->insertItem ( "tun" );
	newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->insertItem ( "tap" );
	newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->insertItem ( "client" );
	newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->insertItem ( "server" );
	newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->setEnabled ( false );
	newprofilewizardopenvpnpagecontent->UserdefinedPortSpinBox->setEnabled ( false );

	newprofilewizardopenvpnpagecontent->UseUserdefinedPortCheckBox->setChecked ( false );
	newprofilewizardopenvpnpagecontent->UseNsCertTypeCheckBox->setChecked ( false );
	newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox->setChecked ( false );
	newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox->setChecked ( false );
	newprofilewizardopenvpnpagecontent->UseUserdefiniedCipherCheckBox->setChecked ( false );
	newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox->setChecked ( false );

	connect ( newprofilewizardopenvpnpagecontent->UseUserdefinedPortCheckBox , SIGNAL ( toggled ( bool ) ), this, SLOT ( userdefinedOpenvpnPortToggeled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseNsCertTypeCheckBox , SIGNAL ( toggled ( bool ) ), this, SLOT ( nsCertTypeOpenvpnToggled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseUserdefinedPortCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( userdefinedOpenvpnPortToggeled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useTlsAuthToggled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useTlsRemoteHostToggled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseUserdefiniedCipherCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useUserdefiniedCipherToggled ( bool ) ) );
	connect ( newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useHttpProxyToggeled ( bool ) ) );

	QStringList ciphers = Utils ( GlobalConfig ).getOpenvpnCiphers();
	QStringList digests = Utils ( GlobalConfig ).getOpenvpnDigests();

	for ( QStringList::Iterator it = ciphers.begin(); it != ciphers.end(); ++it )
	{
		newprofilewizardopenvpnpagecontent->UserdefiniedCipherComboBox->insertItem ( *it );
	}

	for ( QStringList::Iterator it = digests.begin(); it != digests.end(); ++it )
	{
		newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->insertItem ( *it );
	}

	// pptp
	newprofilewizardpptppage = new QHBox ( 0 );
	// 	newprofilewizardpptppage->setSpacing(8);
	QLabel *setupPixmapContent9 = new QLabel ( newprofilewizardpptppage );
	setupPixmapContent9->setPixmap ( *SetupPixmap );
	setupPixmapContent9->resize ( setupPixmapContent9->sizeHint() );
	newprofilewizardpptppagecontent = new NewProfileWizardPptp ( newprofilewizardpptppage );
	newprofilewizardpptppage->sizeHint();
	newprofilewizardpptppagecontent->DnsServerLineedit->setEnabled ( false );
	newprofilewizardpptppagecontent->RequireMppeCheckbox->setChecked( profileData->getRequireMppe() );
	newprofilewizardpptppagecontent->Refuse128BitEncryptionCheckbox->setChecked( profileData->getRefuse128BitEncryption() );
	newprofilewizardpptppagecontent->Refuse40BitEncryptionCheckbox->setChecked( profileData->getRefuse40BitEncryption() );
	newprofilewizardpptppagecontent->UseNoMPPECompressionCheckbox->setChecked( profileData->getDisableMPPEComp() );
	newprofilewizardpptppagecontent->GetDnsFromPeerCheckbox->setChecked( profileData->getUseGetDnsFromPeer() );
	newprofilewizardpptppagecontent->DnsServerCheckbox->setChecked( profileData->getUseDnsUpdate() );
	newprofilewizardpptppagecontent->DnsServerCheckbox->setChecked( profileData->getUseDnsServer() );
	newprofilewizardpptppagecontent->DnsServerLineedit->setText( profileData->getDnsServer() );
	newprofilewizardpptppagecontent->UseNoBsdCompCheckbox->setChecked( profileData->getUseNoBsdComp() );
	newprofilewizardpptppagecontent->UseNoDeflateCheckbox->setChecked( profileData->getUseNoDeflate() );
	newprofilewizardpptppagecontent->AllowStatefulModeCheckbox->setChecked( profileData->getAllowStatefulMode() );
	newprofilewizardpptppagecontent->UseNoIpDefaultCheckbox->setChecked( profileData->getUseNoIpDefault() );
	newprofilewizardpptppagecontent->DisableCcpCheckbox->setChecked( profileData->getDisableCcp() );
	newprofilewizardpptppagecontent->DisableHeaderCompressionCheckbox->setChecked(profileData->getDisableHeaderCompression());
	newprofilewizardpptppagecontent->DisableMagicNumberNegotiationCheckbox->setChecked(profileData->getDisableMagicNumberNegotiation());
	newprofilewizardpptppagecontent->DisableIpxCheckbox->setChecked(profileData->getDisableIpx());
	newprofilewizardpptppagecontent->DisableAdressControlCompressionCheckbox->setChecked(profileData->getDisableAdressControlCompression());
	newprofilewizardpptppagecontent->DisableProtocolFieldCompressionCheckbox->setChecked(profileData->getDisableProtocolFieldCompression());
	

	newprofilewizardpptppagecontent->AuthMethodComboBox->insertItem ( "chap" );
	newprofilewizardpptppagecontent->AuthMethodComboBox->insertItem ( "pap" );
	newprofilewizardpptppagecontent->AuthMethodComboBox->insertItem ( "mschap" );
	newprofilewizardpptppagecontent->AuthMethodComboBox->insertItem ( "mschap-v2" );

	connect( newprofilewizardpptppagecontent->DnsServerCheckbox, SIGNAL( toggled(bool) ), this, SLOT( useDnsServerToggled(bool) ) );
	connect( newprofilewizardpptppagecontent->UseSearchDomainInResolvConfCheckbox, SIGNAL( toggled(bool) ), this, SLOT( useSearchDomainInResolvConfToggled(bool) ) );

	// vtun
	newprofilewizardvtunpage = new QHBox ( 0 );
	// 	newprofilewizardvtunpage->setSpacing(8);
	QLabel *setupPixmapContent19 = new QLabel ( newprofilewizardvtunpage );
	setupPixmapContent19->setPixmap ( *SetupPixmap );
	setupPixmapContent19->resize ( setupPixmapContent19->sizeHint() );
	newprofilewizardvtunpagecontent = new ProfileVtunOptions ( newprofilewizardvtunpage );
	newprofilewizardvtunpage->sizeHint();
	connect ( newprofilewizardvtunpagecontent->PortCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( usePortToggled ( bool ) ) );

	// ssh
	newprofilewizardsshpage = new QHBox ( 0 );
	// 	newprofilewizardsshpage->setSpacing(8);
	QLabel *setupPixmapContent191 = new QLabel ( newprofilewizardsshpage );
	setupPixmapContent191->setPixmap ( *SetupPixmap );
	setupPixmapContent191->resize ( setupPixmapContent191->sizeHint() );
	newprofilewizardsshpagecontent = new ProfileSshOptions ( newprofilewizardsshpage );
	newprofilewizardsshpage->sizeHint();

	QString Home= QString(getenv("HOME"));
	if (!Home.isEmpty())
	{
		QDir dir( Home+"/.ssh" );
		QStringList KeyFiles = dir.entryList( "*" );
		
		//if (GlobalConfig->KvpncDebugLevel > 2)
		//{
		//	GlobalConfig->appendLogEntry(i18n("SSH files: %1").arg(KeyFiles.join(",")),GlobalConfig->debug);
		//}
		
		if (KeyFiles.size() > 1)
		{
			for ( QStringList::Iterator it = KeyFiles.begin(); it != KeyFiles.end(); ++it )
			{
				QString item = QString(*it);
				if (GlobalConfig->KvpncDebugLevel > 2)
				{
					//GlobalConfig->appendLogEntry(i18n("processing entry: %1").arg(item),GlobalConfig->debug);
				}
				if (!item.contains (".pub", false)  && !item.contains ("authorized_keys", false)  && !item.contains ("known_hosts", false) && !item.contains (".", false) && !item.contains ("..", false) && !item.contains ("config", false) )
				{
					if (GlobalConfig->KvpncDebugLevel > 2)
					{
						GlobalConfig->appendLogEntry(i18n("SSH key found: %1").arg(*it),GlobalConfig->debug);
					}
						newprofilewizardsshpagecontent->SshKeyComboBox->insertItem(*it);
				}
			}
		}
	}


	newprofilewizardauthselectionpage = new QHBox ( 0 );
	// 	newprofilewizardauthselectionpage->setSpacing(8);
	QLabel *setupPixmapContent81 = new QLabel ( newprofilewizardauthselectionpage );
	setupPixmapContent81->setPixmap ( *SetupPixmap );
	setupPixmapContent81->resize ( setupPixmapContent81->sizeHint() );
	newprofilewizardauthselectioncontent = new NewProfileWizardAuthSelection ( newprofilewizardauthselectionpage );
	newprofilewizardauthselectionpage->sizeHint();
	newprofilewizardauthselectioncontent->CertificateRadioButton->setChecked ( true );
	newprofilewizardauthselectioncontent->HybridRadioButton->hide ();


	// virtual ip
	newprofilewizardvirtualipaddresspage = new QHBox ( 0 );
	QLabel *setupPixmapContent_virtualip = new QLabel ( newprofilewizardvirtualipaddresspage );
	setupPixmapContent_virtualip->setPixmap ( *SetupPixmap );
	setupPixmapContent_virtualip->resize ( setupPixmapContent_virtualip->sizeHint() );
	profilenetworkvirtualipoptionscontent = new ProfileNetworkVirtualIpOptions ( newprofilewizardvirtualipaddresspage );
	newprofilewizardvirtualipaddresspage->sizeHint();
	insertPage ( newprofilewizardvirtualipaddresspage, "<b>" + i18n ( "Virtual IP address options" ) + "</b>",-1 );
	connect ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useVirtualIpAddressToggled ( bool ) ) );

	// psk
	newprofilewizardpskpage = new QHBox ( 0 );
	// 	newprofilewizardpskpage->setSpacing(8);
	QLabel *setupPixmapContent72 = new QLabel ( newprofilewizardpskpage );
	setupPixmapContent72->setPixmap ( *SetupPixmap );
	setupPixmapContent72->resize ( setupPixmapContent72->sizeHint() );
	newprofilewizardpskcontent = new NewProfileWizardPsk ( newprofilewizardpskpage );
	newprofilewizardpskpage->sizeHint();

	connect ( newprofilewizardpskcontent->PskInFileCheckBox , SIGNAL ( toggled ( bool ) ), this, SLOT ( pskIsInFileToggled ( bool ) ) );
	connect ( newprofilewizardpskcontent->PSKLineEdit , SIGNAL ( textChanged ( const QString & ) ), this, SLOT ( pskInputToggled ( const QString& ) ) );

	newprofilewizardp12certselectionpage = new QHBox ( 0 );
	// 	newprofilewizardp12certselectionpage->setSpacing(8);
	QLabel *setupPixmapContent74 = new QLabel ( newprofilewizardp12certselectionpage );
	setupPixmapContent74->setPixmap ( *SetupPixmap );
	setupPixmapContent74->resize ( setupPixmapContent74->sizeHint() );
	newprofilewizardp12certselectioncontent = new NewProfileWizardP12CertSelection ( newprofilewizardp12certselectionpage );
	newprofilewizardp12certselectionpage->sizeHint();
	connect ( newprofilewizardp12certselectioncontent->UseSmartcardCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useSmartcardOnCertFormateToggled ( bool ) ) );

	// cert
	newprofilewizardcertpage = new QHBox ( 0 );
	// 	newprofilewizardcertpage->setSpacing(8);
	QLabel *setupPixmapContent73 = new QLabel ( newprofilewizardcertpage );
	setupPixmapContent73->setPixmap ( *SetupPixmap );
	setupPixmapContent73->resize ( setupPixmapContent73->sizeHint() );
	newprofilewizardcertcontent = new NewProfileWizardCert ( newprofilewizardcertpage );
	newprofilewizardcertpage->sizeHint();
	connect ( newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox , SIGNAL ( toggled ( bool ) ), this, SLOT ( useSpecialServerCertificateToggled ( bool ) ) );
	connect ( newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox , SIGNAL ( toggled ( bool ) ), this, SLOT ( useSpecialRemoteIDToggled ( bool ) ) );
	connect ( newprofilewizardcertcontent->UseSmartcardCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useSmartcardToggled ( bool ) ) );
	connect ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( usePkcs11ProvidersToggled ( bool ) ) );
	connect ( newprofilewizardcertcontent->DetectPkcs11SlotsPushButton, SIGNAL ( clicked() ), this, SLOT ( detectPkcs11Slots() ) );
	connect ( newprofilewizardcertcontent->DetectPkcs11IdPushButton, SIGNAL ( clicked() ), this, SLOT ( detectPkcs11Ids() ) );
	newprofilewizardcertcontent->Pkcs11SlotTypeComboBox->setEnabled ( false );
	newprofilewizardcertcontent->Pkcs11SlotTypeLabel->setEnabled ( false );
	newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->setURL ( QString ( "/usr/local/lib/libetpkcs11.so" ) );


	// user
	newprofilewizarduserpage = new QHBox ( 0 );
	// 	newprofilewizarduserpage->setSpacing(8);
	QLabel *setupPixmapContent75 = new QLabel ( newprofilewizarduserpage );
	setupPixmapContent75->setPixmap ( *SetupPixmap );
	setupPixmapContent75->resize ( setupPixmapContent75->sizeHint() );
	newprofilewizarduserpagecontent = new NewProfileWizardUser ( newprofilewizarduserpage );
	newprofilewizarduserpage->sizeHint();

	connect ( newprofilewizarduserpagecontent->PasswordEdit , SIGNAL ( textChanged ( const QString& ) ), this, SLOT ( userpassToggled ( const QString& ) ) );
	connect ( newprofilewizarduserpagecontent->UsernameLineEdit , SIGNAL ( textChanged ( const QString& ) ), this, SLOT ( usernameToggled ( const QString& ) ) );
	connect ( newprofilewizarduserpagecontent->NtDomainNameCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( domainNameToggled ( bool ) ) );
	newprofilewizarduserpagecontent ->NtDomainNameCheckbox->setEnabled ( true );
	newprofilewizarduserpagecontent ->NtDomainNameCheckbox->hide();
	newprofilewizarduserpagecontent ->NtDomainNameLineedit->hide();


	// network
	newprofilewizardnetworkpage = new QHBox ( 0 );
	// 	newprofilewizardnetworkpage->setSpacing(8);
	QLabel *setupPixmapContent76 = new QLabel ( newprofilewizardnetworkpage );
	setupPixmapContent76->setPixmap ( *SetupPixmap );
	setupPixmapContent76->resize ( setupPixmapContent76->sizeHint() );
	newprofilewizardnetworkcontent = new NewProfileWizardNetwork ( newprofilewizardnetworkpage );
	newprofilewizardnetworkpage->sizeHint();
	newprofilewizardnetworkcontent->NetworkDeviceComboBox->insertItem ( "default" );

	NetworkInterface iface ( GlobalConfig, GlobalConfig->appPointer );
	QStringList list = iface.getAllNetworkInterfaces();
	for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
		newprofilewizardnetworkcontent->NetworkDeviceComboBox->insertItem ( QString ( *it ) );

	newprofilewizardnetworkcontent->MtuSpinbox->hide();
	newprofilewizardnetworkcontent->MtuCheckbox->hide();
	newprofilewizardnetworkcontent->MruSpinbox->hide();
	newprofilewizardnetworkcontent->MruCheckbox->hide();

	newprofilewizardnetworkcontent->TunnelDeviceTypeLabel->hide();
	newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->hide();

	newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->insertItem("tun");
	newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->insertItem("tap");

	connect ( newprofilewizardnetworkcontent->MtuCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( mtuToggled ( bool ) ) );
	connect ( newprofilewizardnetworkcontent->MtuCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( mtuToggled ( bool ) ) );
	connect ( newprofilewizardnetworkcontent->UseRemoteNetworkCheckBox, SIGNAL ( toggled ( bool ) ) , this, SLOT( useRemoteNetworkToggled (bool )));
	connect ( newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox, SIGNAL(activated ( const QString & )),this, SLOT(tunnelDeviceTypeChanged(const QString& )));

	// network routes
	newprofilewizardnetworkroutepage = new QHBox ( 0 );
	// 	newprofilewizardnetworkroutepage->setSpacing(8);
	QLabel *setupPixmapContent761 = new QLabel ( newprofilewizardnetworkroutepage );
	setupPixmapContent761->setPixmap ( *SetupPixmap );
	setupPixmapContent761->resize ( setupPixmapContent761->sizeHint() );
	newprofilewizardnetworkroutecontent = new ProfileNetworkRouteOptions ( newprofilewizardnetworkroutepage );
	newprofilewizardnetworkroutepage->sizeHint();

	connect(newprofilewizardnetworkroutecontent->DefaultRouteComboBox, SIGNAL(activated(const QString&)), this, SLOT(defaultRouteToggled(const QString&)));

	newprofilewizardnetworkroutecontent->DefaultRouteComboBox->setCurrentItem(1);


	// nat
	newprofilewizardnatpage = new QHBox ( 0 );
	// 	newprofilewizardnatpage->setSpacing(8);
	QLabel *setupPixmapContent77 = new QLabel ( newprofilewizardnatpage );
	setupPixmapContent77->setPixmap ( *SetupPixmap );
	setupPixmapContent77->resize ( setupPixmapContent77->sizeHint() );
	newprofilewizardnatcontent = new NewProfileWizardNat ( newprofilewizardnatpage );
	newprofilewizardnatpage->sizeHint();
	newprofilewizardnatcontent->UseUdpCheckbox->setChecked ( true );
	connect ( newprofilewizardnatcontent->UseUdpCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( useUdpToggled ( bool ) ) );
	connect ( newprofilewizardnatcontent->UdpPortCheckbox, SIGNAL ( toggled ( bool ) ), this, SLOT ( udpPortToggled ( bool ) ) );


	// connectionstatuscheck
	newprofilewizardconnectionstatuscheckpage = new QHBox ( 0 );
	// 	newprofilewizardconnectionstatuscheckpage->setSpacing(8);
	QLabel *setupPixmapContent79 = new QLabel ( newprofilewizardconnectionstatuscheckpage );
	setupPixmapContent79->setPixmap ( *SetupPixmap );
	setupPixmapContent79->resize ( setupPixmapContent79->sizeHint() );
	newprofilewizardconnectionstatuscheckcontent = new NewProfileWizardConnectionStatusCheck ( newprofilewizardconnectionstatuscheckpage );
	newprofilewizardconnectionstatuscheckpage->sizeHint();
	insertPage ( newprofilewizardconnectionstatuscheckpage, "<b>" + i18n ( "Connection status check" ) + "</b>", -1 );
	connect ( newprofilewizardconnectionstatuscheckcontent->PingUserdefiniedAddressCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( pingIpAfterConnectToggled ( bool ) ) );
	connect ( newprofilewizardconnectionstatuscheckcontent->UseConnectionStatusCheckCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( connectionStatusCheckToggled ( bool ) ) );

	// connectoptions
	newprofilewizardconnectoptionspage = new QHBox ( 0 );

	// 	newprofilewizardconnectoptionspage->setSpacing(8);
	QLabel *setupPixmapContent80 = new QLabel ( newprofilewizardconnectoptionspage );
	setupPixmapContent80->setPixmap ( *SetupPixmap );
	setupPixmapContent80->resize ( setupPixmapContent80->sizeHint() );
	newprofilewizardconnectoptionscontent = new NewProfileWizardConnectOptions ( newprofilewizardconnectoptionspage );
	newprofilewizardconnectoptionspage->sizeHint();
	newprofilewizardconnectoptionscontent->DoAutoConnectCheckBox->hide(); //TODO later
	newprofilewizardconnectoptionscontent->AutoConnectProfileComboBox->hide(); //TODO_ later
	insertPage ( newprofilewizardconnectoptionspage, "<b>" + i18n ( "Connect options" ) + "</b>", -1 );

	// general
	newprofilewizardgeneralpage = new QHBox ( 0 );
	// 	newprofilewizardgeneralpage->setSpacing(8);
	QLabel *setupPixmapContent78 = new QLabel ( newprofilewizardgeneralpage );
	setupPixmapContent78->setPixmap ( *SetupPixmap );
	setupPixmapContent78->resize ( setupPixmapContent78->sizeHint() );
	newprofilewizardgeneralpagecontent = new NewProfileWizardGeneral ( newprofilewizardgeneralpage );
	newprofilewizardgeneralpage->sizeHint();
	insertPage ( newprofilewizardgeneralpage, "<b>" + i18n ( "General settings" ) + "</b>", -1 );

	// setup end page
	endpage = new QHBox ( 0 );
	// 	endpage->setSpacing(8);
	QLabel *setupPixmapContent11 = new QLabel ( endpage );
	setupPixmapContent11->setPixmap ( *SetupPixmapFinal );
	setupPixmapContent11->resize ( setupPixmapContent11->sizeHint() );
	QLabel *endpagecontent = new QLabel ( endpage );
	endpagecontent->setMargin ( 11 );
	endpagecontent->setText ( i18n ( "Now you have completed all steps for creating a new profile.\nClick \"Finish\" to continue." ) );
	endpagecontent->setMaximumSize ( endpagecontent->sizeHint() );
	endpage->sizeHint();
	insertPage ( endpage, "<b>" + i18n ( "Finish" ) + "</b>", -1 ); // last page
}

void NewProfileWizard::next ()
{
	// called at each finish of a page
	bool ok = true;
	QString msg = i18n ( "Please fill in all fields!" );

	if ( currentpage == page1 )
	{
		// nothing here
	}
	else if ( currentpage == newprofilewizardgeneralpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		if ( newprofilewizardgeneralpagecontent->NameLineEdit->text().isEmpty() )
		{
			ok = false;
			msg += "- " + i18n ( "Name" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "Name is empty!" ), GlobalConfig->error );
		}
		else
		{
			QString Name = newprofilewizardgeneralpagecontent->NameLineEdit->text();


			bool nameOk = true;
			if ( Name.contains ( ' ' ) )
			{
				KMessageBox::error ( this, i18n ( "Profile name can not contain spaces!" ), i18n ( "Spaces Not Allowed" ) );
				GlobalConfig->appendLogEntry ( i18n ( "Profile name can not contain spaces!" ) , GlobalConfig->error );

				nameOk = FALSE;
			}

			if ( Name.isEmpty() )
			{
				KMessageBox::error ( this, i18n ( "Profile name can not be empty!" ), i18n ( "No Name Entered" ) );
				GlobalConfig->appendLogEntry ( i18n ( "Profile name can not be empty!" ) , GlobalConfig->error );

				nameOk = FALSE;
			}

			VpnAccountData * it;

			while ( nameOk == false )
			{
				for ( it = GlobalConfig->AccountList->first(); it; it = GlobalConfig->AccountList->next() )
				{
					if ( it->getName() == Name )
					{
						//account->setName( QString( account->getName() + "_2" ) );
						// 				KMessageBox::information ( this, i18n( "Profile name exists!\n It will be renamed to \"%1\"." ).arg( account->getName() ), i18n( "Name exist, renamed" ) );
						KMessageBox::error ( this, i18n ( "Profile name exists!" ), i18n ( "Name Exists" ) );

						QString newName = KInputDialog::getText ( i18n ( "New Name" ), i18n ( "New name for profile:" ), QString ( Name += "_2" ), &ok );

						if ( !Name.isEmpty() )
						{
							nameOk = true;
							break;
						}
					}
					nameOk = true;
				}
				nameOk = true;
			}

			if ( nameOk )
			{
				profileData->setName ( Name );

				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "Profile name: %1" ).arg ( profileData->getName() ), KVpncConfig::debug );

				newProfileCreated = TRUE;
			}
			else
			{
				return ;
			}
		}

		if ( newprofilewizardgeneralpagecontent->gatewayLineEdit->text().isEmpty() )
		{
			ok = false;
			msg += "- " + i18n ( "Gateway" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "Gateway is empty!" ), GlobalConfig->error );
		}
		else
		{
			profileData->setGateway ( newprofilewizardgeneralpagecontent->gatewayLineEdit->text() );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Gateway: %1" ).arg ( newprofilewizardgeneralpagecontent->gatewayLineEdit->text() ), KVpncConfig::debug );
		}
		profileData->setDescription ( newprofilewizardgeneralpagecontent->DescriptionLineEdit->text() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Description: %1" ).arg ( newprofilewizardgeneralpagecontent->DescriptionLineEdit->text() ), KVpncConfig::debug );
	}
	else if ( currentpage == newprofilewizardtypeselectionpage )
	{
		if ( newprofilewizardtypeselectionpagecontent->CiscoRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::cisco );
			removePage ( newprofilewizardcertpage );
			removePage ( newprofilewizardpskpage );
			removePage ( newprofilewizardp12certselectionpage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardvirtualipaddresspage );
			newprofilewizardnetworkcontent->RemoteNetworkGroupBox->hide();
// 			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
// 			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
// 			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
// 			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
// 			newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->hide();

			newprofilewizarduserpagecontent ->NtDomainNameCheckbox->show();
			newprofilewizarduserpagecontent ->NtDomainNameLineedit->show();
			
			insertPage ( newprofilewizardciscoselectionpage, "<b>" + i18n ( "Cisco selection" ) + "</b>", indexOf ( currentpage ) + 1 );

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "Cisco (free)" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->CiscoVpncRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::ciscoorig );
// 			removePage ( newprofilewizardcertpage );
			removePage ( newprofilewizardpskpage );
			removePage ( newprofilewizardp12certselectionpage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardvirtualipaddresspage );
			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
			newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->hide();

			newprofilewizarduserpagecontent ->NtDomainNameCheckbox->show();
			newprofilewizarduserpagecontent ->NtDomainNameLineedit->show();

			insertPage ( newprofilewizardciscoselectionpage, "<b>" + i18n ( "Cisco selection" ) + "</b>", indexOf ( currentpage ) + 1 );


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "Cisco (propritary)" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->FreeswanRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::freeswan );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardvirtualipaddresspage );

			insertPage ( newprofilewizardfreeswanpage, "<b>" + i18n ( "FreeSWAN/OpenSWAN settings" ) + "</b>", indexOf ( currentpage ) + 1 );

			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->insertItem ( "main", 0 );
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->insertItem ( "aggressive", 1 );
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->setCurrentItem ( 0 ); // main
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->setEnabled ( true );

			newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->setCurrentItem(1); // tunnel

			newprofilewizardcertcontent->certpathURLRequester->setURL ( "/etc/ipsec.d/cacerts" );
			newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setEnabled ( false );
			newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setCurrentText ( i18n ( "ID" ) );
			
// 			profileData->setIkeGroup ( "modp2048" ); // default for windows?!
// 			profileData->setAuthenticationAlgorithm ( "hmac_md5" ); // default for windows?!
// 			profileData->setHashAlgo ( "sha1" ); // default for windows?!


// 			newprofilewizardfreeswanpagecontent->InfoLabel->setText ( i18n ( "Please enter %1 specific settings:" ).arg ( "FreeS/WAN/Openswan/strongSwan" ) );
			insertPage ( newprofilewizardfreeswanselectionpage, "<b>" + i18n ( "IPSec selection" ) + "</b>", indexOf ( currentpage ) + 1 );


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "FreeS/WAN/Openswan/strongSwan" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->RacoonRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::racoon );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardvirtualipaddresspage );


// 			profileData->setIkeGroup ( "modp2048" ); // default for windows?!
// 			profileData->setHashAlgo ( "sha1" ); // default for windows?!
// 			profileData->setAuthenticationAlgorithm ( "hmac_md5" );

			profileData->setUseMailAddressAsIdentifier ( false );

// 			newprofilewizardracoonpagecontent->DHGroupComboBox->setCurrentText ( profileData->getIkeGroup() );
// 			newprofilewizardracoonpagecontent->AuthenticationAlgorithmComboBox->setCurrentText ( profileData->getAuthenticationAlgorithm() );
// 			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->setCurrentText ( profileData->getEncryptionAlgorithm() );

			Utils::IpsecAlgos KernelCrypto = Utils ( GlobalConfig ).getKernelCrypto();

			// man racoon.conf
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("des" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("3des" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("blowfish" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("cast128" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("aes" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("camellia" );

			newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->setCurrentText("3des");
			
			// man racoon.conf
			newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "md5" );
			newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha1" );
			newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha256" );
			newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha384" );
			newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha512" );

			newprofilewizardracoonpagecontent->HashAlgoComboBox->setCurrentText("md5");
			
			// vpn mit linux book
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("3des" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des_iv64" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("des_iv32" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rc5" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rc4" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("idea" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("3idea" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("cast128" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("blowfish" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("null_enc" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("twofish" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("rijndael" );
			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem("aes" );

			newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->setCurrentText("3des");

			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "3des" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv64" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv32" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_md5" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha1" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha256" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha384" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha512" );
			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "non_auth" );

			newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->setCurrentText( "hmac_md5" );
			
			for ( QStringList::Iterator it = KernelCrypto.IpsecEspEncryptionAlgorithms.begin(); it != KernelCrypto.IpsecEspEncryptionAlgorithms.end(); ++it )
			{
				newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem ( *it );
			}

			newprofilewizardcertcontent->UseSmartcardCheckBox->hide();
			newprofilewizardcertcontent->SmartcardGroupBox->hide();
			newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->hide();


			insertPage ( newprofilewizardauthselectionpage, i18n ( "Authentication settings" ), indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardracoonpage, "<b>" + i18n ( "Racoon settings" ) + "</b>", indexOf ( currentpage ) + 2 );

			newprofilewizardauthselectioncontent->HybridRadioButton->show();


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "Racoon" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->L2tpRacoonRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::l2tpd_racoon );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardnetworkpage );
			removePage ( newprofilewizardvirtualipaddresspage );

			profileData->setUseMailAddressAsIdentifier ( false );

// 			profileData->setIkeGroup ( "modp2048" ); // default for windows?!
// 			profileData->setHashAlgo ( "sha1" ); // default for windows?!
// 			profileData->setAuthenticationAlgorithm ( "hmac_md5" ); // default for windows?

	Utils::IpsecAlgos KernelCrypto = Utils ( GlobalConfig ).getKernelCrypto();

	//FIXME why this is not in kernel crypto list???
// 	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem ( "3des" );

	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("des" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("des_iv64" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("des_iv32" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("rc5" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("rc4" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("idea" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("3idea" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("cast128" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("blowfish" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("null_enc" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("twofish" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("rijndael" );
	newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem("aes" );

	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "md5" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha1" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha256" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha384" );
	newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem( "sha512" );

	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "3des" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv64" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "des_iv32" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_md5" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha1" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha256" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha384" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "hmac_sha512" );
	newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem( "non_auth" );

// 	for ( QStringList::Iterator it = KernelCrypto.IpsecIkeEncryptionAlgorithms.begin(); it !=  KernelCrypto.IpsecIkeEncryptionAlgorithms.end(); ++it )
// 	{
// 		newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->insertItem ( *it );
// 	}
// 
// 	for ( QStringList::Iterator it = KernelCrypto.IpsecIkeHashAlgorithms.begin(); it != KernelCrypto.IpsecIkeHashAlgorithms.end(); ++it )
// 	{
// 		newprofilewizardracoonpagecontent->HashAlgoComboBox->insertItem ( *it );
// 	}

	for ( QStringList::Iterator it = KernelCrypto.IpsecEspEncryptionAlgorithms.begin(); it != KernelCrypto.IpsecEspEncryptionAlgorithms.end(); ++it )
	{
		newprofilewizardracoonpagecontent->EncryptionAlgorithm2ComboBox->insertItem ( *it );
	}

// 	for ( QStringList::Iterator it = KernelCrypto.IpsecEspAuthenticationAlgorithms.begin(); it != KernelCrypto.IpsecEspAuthenticationAlgorithms.end(); ++it )
// 	{
// 		newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->insertItem ( *it );
// 	}
			insertPage ( newprofilewizardracoonpage, "<b>" + i18n ( "Racoon settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardauthselectionpage, i18n ( "Authentication settings" ), indexOf ( currentpage ) + 2 );
			insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 3 );

			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
			newprofilewizarduserpagecontent ->NtDomainNameCheckbox->show();
			newprofilewizarduserpagecontent ->NtDomainNameLineedit->show();
			newprofilewizardcertcontent->UseSmartcardCheckBox->hide();
			newprofilewizardcertcontent->SmartcardGroupBox->hide();
			newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->hide();
			newprofilewizardcertcontent->certpathURLRequester->setURL ( "/etc/racoon/" );


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "L2TP (racoon)" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->L2tpFreeswanRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::l2tpd_freeswan );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardnetworkpage );
			removePage ( newprofilewizardvirtualipaddresspage );

			profileData->setUseMailAddressAsIdentifier ( false );

			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->insertItem ( "main", 0 );
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->insertItem ( "aggressive", 1 );
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->setCurrentItem ( 0 ); // main
			newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->setEnabled ( true );
			newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->setCurrentItem(1); // transport
			newprofilewizardfreeswanpagecontent->IpsecVpnModeCombobox->setEnabled(false);


			newprofilewizarduserpagecontent ->NtDomainNameCheckbox->show();
			newprofilewizarduserpagecontent ->NtDomainNameLineedit->show();
			newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setEnabled ( false );
			newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setCurrentText ( i18n ( "ID" ) );
			newprofilewizardauthselectioncontent->CertificateRadioButton->setText ( i18n ( "&Certificate/Smartcard" ) );
			newprofilewizardcertcontent->certpathURLRequester->setURL ( "/etc/ipsec.d/cacerts" );

// 			newprofilewizardfreeswanpagecontent->InfoLabel->setText ( i18n ( "Please enter %1 specific settings:" ).arg ( "FreeS/WAN/Openswan/strongSwan" ) );

			insertPage ( newprofilewizardfreeswanselectionpage, "<b>" + i18n ( "IPSec selection" ) + "</b>", indexOf ( currentpage ) + 1 );

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "L2TP (OpenS/WAN)" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->OpenvpnRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::openvpn );
			profileData->setLocalPort ( 1194 );
			profileData->setRemotePort ( 1194 );
			profileData->setUserdefinedPort ( 1194 );
			profileData->setUseSmartcard ( false );
			profileData->setCertPath ( "/etc/openvpn" );
			profileData->setHashAlgo ( "SHA1" );
			profileData->setAuthenticationAlgorithm ( "MD5" );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();

			newprofilewizardcertcontent->UseSmartcardCheckBox->show();
			newprofilewizardcertcontent->SmartcardGroupBox->show();
			newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->show();
			newprofilewizardauthselectioncontent->CertificateRadioButton->setText ( i18n ( "&Certificate/Smartcard" ) );
			newprofilewizardcertcontent->certpathURLRequester->setURL ( "/etc/openvpn" );

			insertPage ( newprofilewizardopenvpnauthpage, "<b>" + i18n ( "OpenVPN authentication settings" ) + "</b>", indexOf ( currentpage ) + 1 );

			connect ( newprofilewizardopenvpnauthpagecontent->AuthWithUsernameAndPasswordCheckBox, SIGNAL ( toggled ( bool ) ), this, SLOT ( authenticateWithUsernameAndPasswordToggled ( bool ) ) );
			newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->setCurrentText ( "SHA1" );


			insertPage ( newprofilewizardopenvpnselectionpage, "<b>" + i18n ( "OpenVPN selection" ) + "</b>", indexOf ( currentpage ) + 1 );

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "OpenVPN" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->PptpRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::pptp );
			profileData->setUseMtu ( true );
			profileData->setUseMru ( true );
			profileData->setMtu ( 1200 );
			profileData->setMru ( 1200 );
			newprofilewizardnetworkcontent->MtuSpinbox->show();
			newprofilewizardnetworkcontent->MtuCheckbox->show();
			newprofilewizardnetworkcontent->MruSpinbox->show();
			newprofilewizardnetworkcontent->MruCheckbox->show();
			newprofilewizardnetworkcontent->MtuSpinbox->setValue ( profileData->getMtu() );
			newprofilewizardnetworkcontent->MruSpinbox->setValue ( profileData->getMru() );
			newprofilewizardnetworkcontent->MtuSpinbox->setEnabled ( true );
			newprofilewizardnetworkcontent->MruSpinbox->setEnabled ( true );
			newprofilewizardnetworkcontent->MtuCheckbox->setChecked ( true );
			newprofilewizardnetworkcontent->MruCheckbox->setChecked ( true );
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardcertpage );
			removePage ( newprofilewizardpskpage );
			removePage ( newprofilewizardp12certselectionpage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnselectionpage );
			insertPage ( newprofilewizardpptppage, "<b>" + i18n ( "PPTP settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 2 );
			insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 3 );

			newprofilewizarduserpagecontent ->NtDomainNameCheckbox->show();
			newprofilewizarduserpagecontent ->NtDomainNameLineedit->show();
			newprofilewizardcertcontent->UseSmartcardCheckBox->hide();
			newprofilewizardcertcontent->SmartcardGroupBox->hide();


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "PPTP" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->VtunRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::vtun );
			profileData->setLocalPort ( 5000 );
			profileData->setRemotePort ( 5000 );
			profileData->setUserdefinedPort ( 5000 );
			profileData->setUseSmartcard ( false );
// 			profileData->setCertPath( "/etc/openvpn" );
// 			profileData->setHashAlgo("SHA1");
// 			profileData->setAuthenticationAlgorithm("MD5");
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardopenvpnpage );
			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();


			insertPage ( newprofilewizardvtunpage, "<b>" + i18n ( "Vtun options" ) + "</b>",2 );
			insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 3 );
			insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 4 );


			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "Vtun" ), KVpncConfig::debug );
		}
		else if ( newprofilewizardtypeselectionpagecontent->SshRadioButton->isChecked() )
		{
			profileData->setConnectionType ( VpnAccountData::ssh );
			profileData->setRemotePort ( 22 );
			profileData->setUseSmartcard ( false );
			profileData->setTunnelDeviceType("tun");
			removePage ( newprofilewizardvtunpage);
			removePage ( newprofilewizardciscoselectionpage );
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardracoonpage );
			removePage ( newprofilewizardpptppage );
			removePage ( newprofilewizardfreeswanpage );
			removePage ( newprofilewizardfreeswanselectionpage );
			removePage ( newprofilewizardopenvpnpage );
			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
			
			profilenetworkvirtualipoptionscontent->SourceIpgroupBox->hide();
			
			newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
			newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
			newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
			newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
			newprofilewizardnetworkcontent->UseRemoteNetworkCheckBox->hide();
			newprofilewizardnetworkcontent->RemoteNetworkGroupBox->hide();

			newprofilewizardnetworkcontent->TunnelDeviceTypeLabel->show();
			newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->show();
			newprofilewizardnetworkcontent->TunnelDeviceTypeLabel->setEnabled(true);
			newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->setEnabled(true);
			

			profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->setChecked(true);
			newprofilewizarduserpagecontent->UsernameLineEdit->setText("root");
	
			insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardsshpage, "<b>" + i18n ( "SSH options" ) + "</b>",2 );
			insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 3 );
			insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 4 );

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Selected type: %1" ).arg ( "SSH" ), KVpncConfig::debug );
		}


		QString type = ""; // visible name
		QString bin = "";  // executable name
		if ( profileData->getConnectionType() == VpnAccountData::cisco )
		{
			type = "vpnc";
			bin = "vpnc";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::freeswan )
		{
			type = "freeswan";
			bin = "ipsec";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::racoon )
		{
			type = "racoon";
			bin = "racoon";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::l2tpd_racoon )
		{
			type = "L2TP (racoon)";
			bin = "racoon";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan )
		{
			type = "L2TP (OpenSWAN)";
			bin = "ipsec";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::pptp )
		{
			type = "pptp";
			bin = "pppd pptp";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::openvpn )
		{
			type = "openvpn";
			bin = "openvpn";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::vtun )
		{
			type = "vtun";
			bin = "vtund";
		}
		else if ( profileData->getConnectionType() == VpnAccountData::ssh )
		{
			type = "ssh";
			bin = "ssh";
		}
		else
		{
			type = "other";
			bin = "";
		}

		ToolInfo *it = 0;
		//std::cout << "Tool (bin): " << bin << std::endl;

		if ( !GlobalConfig->ToolList->isEmpty() )
		{
			if ( type != "pptp" )
			{
				it = Utils ( GlobalConfig ).getToolInfo ( bin );
				if ( it != 0 )
				{
					if ( it->PathToExec.section ( '/', -1 ) == bin )
					{
						if ( GlobalConfig->KvpncDebugLevel > 0 )
							GlobalConfig->appendLogEntry ( i18n ( "The required daemon (%1) is available, you will be able to use this connection." ).arg ( bin ), KVpncConfig::info );
						daemonavailable = true;
					}
					else
					{
						KMessageBox::information ( this, i18n ( "The required daemon (%1) isn't available, you will not be able to use this connection until the daemon is not installed." ).arg ( bin ) );
						if ( GlobalConfig->KvpncDebugLevel > 0 )
							GlobalConfig->appendLogEntry ( i18n ( "The required daemon (%1) isn't available, you will not be able to use this connection until the daemon is not installed." ).arg ( bin ), KVpncConfig::error );
						daemonavailable = false;
						removePage ( newprofilewizardconnectoptionspage );
					}
				}
				if ( type == "ipsec" )
				{

					QString realversion = it->Version.section ( ' ', 1, 1 ).section ( '/', 0, 0 ).right ( it->Version.section ( ' ', 1, 1 ).section ( '/', 0, 0 ).length() - 1 );
					QString realtype = it->Version.section ( ' ', 0, 0 ).lower();

					if ( realversion.find ( "1.", 0, -1 ) > -1 )
					{
						KMessageBox::information ( this, i18n ( "The required version (%1) of FreeSWAN/OpenSWAN was not found. You will not be able to use the Agressive Mode. It will be used the Main Mode." ).arg ( "2" ) );
						if ( GlobalConfig->KvpncDebugLevel > 0 )
							GlobalConfig->appendLogEntry ( i18n ( "The required version (%1) of FreeSWAN/OpenSWAN was not found. You will not be able to use the Agressive Mode. It will be used the Main Mode." ).arg ( "2" ).arg ( bin ), KVpncConfig::error );
					}
				}
			}
			else
			{
				bool pppd_and_pptp_available = false;
				it = Utils ( GlobalConfig ).getToolInfo ( "pppd" );
				if ( it->PathToExec.section ( '/', -1 ) == "pppd" )
				{
					it = Utils ( GlobalConfig ).getToolInfo ( "pptp" );
					if ( it->PathToExec.section ( '/', -1 ) == "pptp" )
						pppd_and_pptp_available = true;
				}
				if ( pppd_and_pptp_available )
				{
					// programs are installed
					daemonavailable = true;
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "The required daemons (%1 and %2) are available." ).arg ( "pppd" ).arg ( "pptp" ), KVpncConfig::info );
				}
				else
				{
					KMessageBox::information ( this, i18n ( "The required daemons (%1 and %2) aren't available, you will not be able to use this connection until the daemons are not installed." ).arg ( "pppd" ).arg ( "pptpd" ) );
					GlobalConfig->appendLogEntry ( i18n ( "The required daemons (%1 and %2) are not available, connect will be disabled." ).arg ( "pppd" ).arg ( "pptpd" ), KVpncConfig::error );
					daemonavailable = false;
					removePage ( newprofilewizardconnectoptionspage );
				}
			}

		}

	}
	else if ( currentpage == newprofilewizardciscoselectionpage )
	{
		if ( newprofilewizardciscoselectionpagecontent->PcfImportRadioButton->isChecked() )
		{
			enterdatamanually = false;
			removePage ( newprofilewizardciscomanuallypage );
			removePage ( newprofilewizardgeneralpage );
			insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Cisco selection: import PCF file" ), KVpncConfig::debug );

			if ( profileData->getConnectionType() == VpnAccountData::cisco )
				importProfile ( VpnAccountData::cisco );
			if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
				importProfile ( VpnAccountData::ciscoorig );
			if ( importOK )
				newProfileCreated = true;
			else
				newProfileCreated = false;

		}
		else
		{
			enterdatamanually = true;

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Cisco selection: enter data manually" ), KVpncConfig::debug );

			if ( profileData->getConnectionType() == VpnAccountData::cisco )
			{
				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "Cisco selection: cisco" ), KVpncConfig::debug );

				insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
				insertPage ( newprofilewizardciscomanuallypage, "<b>" + i18n ( "Cisco settings" ) + "</b>", indexOf ( currentpage ) + 2 );
				insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 3 );
    				insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 4 );
			}
			if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
			{
				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "Cisco selection: ciscoorig" ), KVpncConfig::debug );

				insertPage ( newprofilewizardauthselectionpage, "<b>"+ i18n ( "Authentication settings" ) +"</b>",  indexOf ( currentpage ) + 1 );
				insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 2 );
				insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 4 );
				insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 5 );

				newprofilewizardauthselectioncontent->PskRadioButton->setChecked(true);
			}

		}
	}
	else if ( currentpage == newprofilewizardciscomanuallypage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		if ( newprofilewizardciscomanuallypagecontent->IDLineEdit->text().isEmpty() )
		{
			ok = false;
			msg += "- " + i18n ( "Cisco IPSec ID" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "Cisco IPSec ID is empty!" ), GlobalConfig->error );
		}
		profileData->setGateway ( newprofilewizardciscomanuallypagecontent->IDLineEdit->text() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Cisco IPSec ID: %1" ).arg ( newprofilewizardciscomanuallypagecontent->IDLineEdit->text() ), KVpncConfig::debug );

		profileData->setAllowEmptyGroupPassword ( newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->isChecked() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
		{
			if ( newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->isChecked() )
				GlobalConfig->appendLogEntry ( i18n ( "Allow empty group password: true" ), KVpncConfig::debug );
			else
				GlobalConfig->appendLogEntry ( i18n ( "Allow empty group password: false" ), KVpncConfig::debug );
		}

// 		if ( !newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->isChecked() && newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit->text().isEmpty() )
// 		{
// 			ok = false;
// 			msg += "- " + i18n( "Group password" ) + "\n";
// 			GlobalConfig->appendLogEntry( i18n( "Group password  is empty but you dont have checked to allow that!" ), GlobalConfig->error );
// 		}
// 		else
		profileData->setPreSharedKey ( newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit->text() );

		profileData->setSavePsk ( newprofilewizardciscomanuallypagecontent->CheckSavePsk->isChecked() );
		
		profileData->setID ( newprofilewizardciscomanuallypagecontent->IDLineEdit->text() );
		profileData->setAllowEmptyGroupPassword ( newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->isChecked() );
		
		profileData->setUseDpdIdleTimeout(true);
		if (profileData->getConnectionType() == VpnAccountData::cisco )
			profileData->setDpdIdleTimeout(300);
		if (profileData->getConnectionType() == VpnAccountData::ciscoorig )
			profileData->setDpdIdleTimeout(90);
		
		insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
		insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 2 );
		insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 3 );
		insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 4 );

	}
	else if ( currentpage == newprofilewizardfreeswanpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		profileData->setUseModeConfig ( newprofilewizardfreeswanpagecontent->UseModeConfigCheckBox->isChecked() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
		{
			if ( newprofilewizardfreeswanpagecontent->UseModeConfigCheckBox->isChecked() )
				GlobalConfig->appendLogEntry ( i18n ( "Use Mode Config: %1" ).arg ( i18n ( "yes" ) ), KVpncConfig::debug );
			else
				GlobalConfig->appendLogEntry ( i18n ( "Use Mode Config: %1" ).arg ( i18n ( "no" ) ), KVpncConfig::debug );
		}

		profileData->setExchangeMode ( newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Exchange mode (%1): %2" ).arg ( "ipsec" ).arg ( newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->currentText() ), KVpncConfig::debug );

		profileData->setLeftNextHop ( newprofilewizardfreeswanpagecontent->LeftNextHopLineEdit->text() ); //TODO check valid IP
		profileData->setRightNextHop ( newprofilewizardfreeswanpagecontent->RightNextHopLineEdit->text( ) ); //TODO check valid IP
		profileData->setDisableOpportunisticEncryption ( newprofilewizardfreeswanpagecontent->DisableOpportunisticEncryptionCheckBox->isChecked( ) );

		// xauth
		if (newprofilewizardfreeswanpagecontent->UseXauthCheckBox->isChecked())
		{
			profileData->setAuthWithUsernameAndPassword(true);
		}
		else
		{
			profileData->setAuthWithUsernameAndPassword(false);
		}

		if ( GlobalConfig->KvpncDebugLevel > 0 )
		{
			if ( newprofilewizardfreeswanpagecontent->DisableOpportunisticEncryptionCheckBox->isChecked() )
				GlobalConfig->appendLogEntry ( i18n ( "Disable opportunistic encryption: %1" ).arg ( i18n ( "yes" ) ), KVpncConfig::debug );
			else
				GlobalConfig->appendLogEntry ( i18n ( "Disable opportunistic encryption: %1" ).arg ( i18n ( "no" ) ), KVpncConfig::debug );
			GlobalConfig->appendLogEntry ( i18n ( "Right next hop: %1" ).arg ( newprofilewizardfreeswanpagecontent->RightNextHopLineEdit->text() ), KVpncConfig::debug );
			GlobalConfig->appendLogEntry ( i18n ( "Left next hop: %1" ).arg ( newprofilewizardfreeswanpagecontent->LeftNextHopLineEdit->text() ), KVpncConfig::debug );
			GlobalConfig->appendLogEntry ( i18n ( "Use PFS: %1" ).arg ( profileData->getPerfectForwardSecrety() ), KVpncConfig::debug );

		}

		profileData->setExchangeMode ( newprofilewizardfreeswanpagecontent->ExchangeModeComboBox->currentText() );

		if (newprofilewizardfreeswanpagecontent->UseXauthCheckBox->isChecked())
		{
			if ( newprofilewizardfreeswanpagecontent->LocalIDLineEdit->text().isEmpty() )
			{
				ok = false;
				msg += "- " + i18n ( "Local ID  (Group ID)" ) + "\n";
				GlobalConfig->appendLogEntry ( i18n ( "Local ID (Group ID)  is empty!" ), GlobalConfig->error );
			}
			profileData->setUseSpecialLocalID(true);
		}
		
		profileData->setLocalIDType ( newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->currentText() );

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Type of local ID: %1" ).arg ( newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->currentText() ), KVpncConfig::debug );

		profileData->setSpecialLocalID ( newprofilewizardfreeswanpagecontent->LocalIDLineEdit->text() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Local ID value: %1" ).arg ( newprofilewizardfreeswanpagecontent->LocalIDLineEdit->text() ), KVpncConfig::debug );

				// ike + esp
				QStringList IkeList;
				QStringList EspList;

				if (newprofilewizardfreeswanpagecontent->IkeAes256Sha1CheckBox->isChecked())
					IkeList.append("aes256-sha1");
				if (newprofilewizardfreeswanpagecontent->IkeAes128Sha1CheckBox->isChecked())
					IkeList.append("aes128-sha1");
				if (newprofilewizardfreeswanpagecontent->IkeDesSha1Modp2048CheckBox->isChecked())
					IkeList.append("3des-sha1-modp2048");
				if (newprofilewizardfreeswanpagecontent->IkeDesMd5CheckBox->isChecked())
					IkeList.append("3des-md5");
				if (newprofilewizardfreeswanpagecontent->IkeDesSha1CheckBox->isChecked())
					IkeList.append("3des-sha1");

				if (!newprofilewizardfreeswanpagecontent->OtherIkeLineEdit->text().isEmpty())
					IkeList.append(newprofilewizardfreeswanpagecontent->OtherIkeLineEdit->text());

				if (newprofilewizardfreeswanpagecontent->Esp3desMd5CheckBox->isChecked())
					EspList.append("3des-md5");
				if (newprofilewizardfreeswanpagecontent->EspDesSha1CheckBox->isChecked())
					EspList.append("3des-sha1");
				if (newprofilewizardfreeswanpagecontent->EspAes128Sha1CheckBox->isChecked())
					EspList.append( "aes128-sha1");
				if (newprofilewizardfreeswanpagecontent->EspAes256Sha1CheckBox->isChecked())
					EspList.append( "aes256-sha1");

				if (!newprofilewizardfreeswanpagecontent->OtherEspLineEdit->text().isEmpty())
					EspList.append(newprofilewizardfreeswanpagecontent->OtherEspLineEdit->text());

// 				for ( QStringList::Iterator ikeit = IkeList.begin(); ikeit != IkeList.end(); ++ikeit )
// 					std::cout << "ike: " << *ikeit << ":" << std::endl;

// 				for ( QStringList::Iterator espit = EspList.begin(); espit != EspList.end(); ++espit )
// 					std::cout << "esp: " << *espit << ":" << std::endl;

				if(newprofilewizardfreeswanpagecontent->UseCustomEspCheckBox->isChecked() && !EspList.isEmpty())
				{
					profileData->setUseCustomEsp(true);
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Use custom %1: %2" ).arg ( i18n("ESP") ).arg(i18n("yes")), KVpncConfig::debug );

					profileData->setIpsecEsp(EspList.join(","));

					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "ESP settings: %1" ).arg ( EspList.join(",") ), KVpncConfig::debug );
		
				}
				else if(newprofilewizardfreeswanpagecontent->UseCustomEspCheckBox->isChecked() && EspList.isEmpty())
				{
					ok = false;
					msg += "- " + i18n ( "Use custom ESP checked but none selected!" ) + "\n";
					GlobalConfig->appendLogEntry ( i18n ( "Use custom ESP checked but none selected!" ), GlobalConfig->error );
				}
				else if(!newprofilewizardfreeswanpagecontent->UseCustomEspCheckBox->isChecked())
				{
					profileData->setUseCustomEsp(false);
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Use custom %1: %2" ).arg ( i18n("ESP") ).arg(i18n("no")), KVpncConfig::debug );
				}

				if(newprofilewizardfreeswanpagecontent->UseCustomIkeCheckBox->isChecked() && !IkeList.isEmpty())
				{
					profileData->setUseCustomIke(true);
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Use custom %1: %2" ).arg ( i18n("IKE") ).arg(i18n("yes")), KVpncConfig::debug );

					profileData->setIpsecIke(IkeList.join(","));

					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "IKE settings: %1" ).arg ( IkeList.join(",") ), KVpncConfig::debug );
		
				}
				else if(newprofilewizardfreeswanpagecontent->UseCustomIkeCheckBox->isChecked() && IkeList.isEmpty())
				{
					ok = false;
					msg += "- " + i18n ( "Use custom IKE checked but none selected!" ) + "\n";
					GlobalConfig->appendLogEntry ( i18n ( "Use custom IKE checked but none selected!" ), GlobalConfig->error );
				}
				else if (!newprofilewizardfreeswanpagecontent->UseCustomIkeCheckBox->isChecked())
				{
					profileData->setUseCustomIke(false);
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Use custom %1: %2" ).arg ( i18n("IKE") ).arg(i18n("false")), KVpncConfig::debug );
				}

			if (ok)
			{
				if (newprofilewizardfreeswanpagecontent->UseXauthCheckBox->isChecked())
				{
					if (GlobalConfig->KvpncDebugLevel > 1)
						GlobalConfig->appendLogEntry ( i18n ( "Authenticate with username and password: %1" ).arg ( i18n ( "yes" ) ), KVpncConfig::debug );
					profileData->setAuthWithUsernameAndPassword(true);
					
					insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
					insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 2 );
					insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 3 );
					insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 4 );
				}
				else
				{
					if (GlobalConfig->KvpncDebugLevel > 1)
						GlobalConfig->appendLogEntry ( i18n ( "Authenticate with username and password: %1" ).arg ( i18n ( "no" ) ), KVpncConfig::debug );
					
					insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 1 );
					insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 2 );
					insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 3 );
				}
			}

	}
	else if ( currentpage == newprofilewizardfreeswanselectionpage )
	{
		if ( newprofilewizardfreeswanselectionpagecontent->OpenvpnImportRadioButton->isChecked() )
		{
			enterdatamanually = false;
			removePage ( newprofilewizardfreeswanpage );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "IPSec selection: import profile file" ), KVpncConfig::debug );

			// 			removePage ( newprofilewizardgeneralpage );
// 			removePage ( newprofilewizardvirtualipaddresspage );

			if ( importProfile ( VpnAccountData::freeswan ) == true )
			{
				newProfileCreated = true;
				newprofilewizardgeneralpagecontent->NameLineEdit->setText ( profileData->getName() );
				newprofilewizardgeneralpagecontent->gatewayLineEdit->setText ( profileData->getGateway() );
				newprofilewizardgeneralpagecontent->DescriptionLineEdit->setText ( profileData->getDescription() );

			}
			else
			{
				newProfileCreated = false;
				ok = false;
			}
		}
		else
		{
			enterdatamanually = true;
			insertPage ( newprofilewizardfreeswanpage, "<b>" + i18n ( "IPSec settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardauthselectionpage, i18n ( "Authentication settings" ), indexOf ( currentpage ) + 1 );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "IPSec selection: enter data manually" ), KVpncConfig::debug );
		}

	}
	else if ( currentpage == newprofilewizardracoonpage )
	{
		if ( newprofilewizardracoonpagecontent->HashAlgoComboBox->currentText() == "SHA1" )
		{
			profileData->setHashAlgo ( "sha1" );
		}
		if ( newprofilewizardracoonpagecontent->HashAlgoComboBox->currentText() == "MD5" )
		{
			profileData->setHashAlgo ( "md5" );
		}

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Hash algorithm (%1): %2" ).arg ( "racoon" ).arg ( profileData->getHashAlgo() ), KVpncConfig::debug );

		if ( newprofilewizardtypeselectionpagecontent->RacoonRadioButton->isChecked() )
		{
			profileData->setUseModeConfig ( newprofilewizardracoonpagecontent->UseModeConfigCheckBox->isChecked() );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
			{
				if ( newprofilewizardracoonpagecontent->UseModeConfigCheckBox->isChecked() )
					GlobalConfig->appendLogEntry ( i18n ( "Use Mode Config: %1" ).arg ( i18n ( "yes" ) ), KVpncConfig::debug );
				else
					GlobalConfig->appendLogEntry ( i18n ( "Use Mode Config: %1" ).arg ( i18n ( "no" ) ), KVpncConfig::debug );
			}
		}

		profileData->setExchangeMode ( newprofilewizardracoonpagecontent->ExchangeModeComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Exchange mode (%1): %2" ).arg ( "racoon" ).arg ( newprofilewizardracoonpagecontent->ExchangeModeComboBox->currentText() ), KVpncConfig::debug );

		profileData->setIkeGroup ( newprofilewizardracoonpagecontent->DHGroupComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "DH group (%1): %2" ).arg ( "racoon" ).arg ( newprofilewizardracoonpagecontent->DHGroupComboBox->currentText() ), KVpncConfig::debug );

		profileData->setAuthenticationAlgorithm( newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Authentication algorithm (%1) (phase 2): %2" ).arg ( "racoon" ).arg ( newprofilewizardracoonpagecontent->AuthenticationAlgorithm2ComboBox->currentText() ),KVpncConfig::debug );

		profileData->setIpsecIke(newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->currentText());
		profileData->setUseAuthenticationAlgorithm(true);
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Encryption algorithm (%1) (phase 1): %2" ).arg ( "racoon" ).arg ( newprofilewizardracoonpagecontent->EncryptionAlgorithmComboBox->currentText() ), KVpncConfig::debug );

		profileData->setLocalIDType ( newprofilewizardracoonpagecontent->LocalIdTypeCombobox->currentText() );

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Type of local ID: %1" ).arg ( newprofilewizardracoonpagecontent->LocalIdTypeCombobox->currentText() ), KVpncConfig::debug );

		profileData->setSpecialLocalID ( newprofilewizardracoonpagecontent->LocalIDLineEdit->text() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Local ID value: %1" ).arg ( newprofilewizardracoonpagecontent->LocalIDLineEdit->text() ), KVpncConfig::debug );

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Type of remote ID: %1" ).arg ( newprofilewizardracoonpagecontent->RemoteIdTypeCombobox->currentText() ), KVpncConfig::debug );

		profileData->setSpecialLocalID ( newprofilewizardracoonpagecontent->RemoteIDLineEdit->text() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Remote ID value: %1" ).arg ( newprofilewizardracoonpagecontent->RemoteIDLineEdit->text() ), KVpncConfig::debug );


		if (newprofilewizardracoonpagecontent->UseXauthCheckBox->isChecked())
		{
			profileData->setAuthWithUsernameAndPassword(true);
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Authenticate with username and password: %1" ).arg ( i18n ( "yes" ) ), KVpncConfig::debug );
			insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 2 );
			insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 3 );
			insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) +4 );

		}
		else
		{
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Authenticate with username and password: %1" ).arg ( i18n ( "no" ) ), KVpncConfig::debug );
			insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 2 );
			insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) +3 );
		}
	}
	else if ( currentpage == newprofilewizardopenvpnpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		profileData->setTunnelDeviceType ( newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Tunnel device type (%1): %2" ).arg ( "OpenVPN" ).arg ( newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->currentText() ), KVpncConfig::debug );

		if ( newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->currentText() == "client" )
			profileData->setNsCertType ( "client" );
		else
			profileData->setNsCertType ( "server" );

		profileData->setTunnelDeviceType ( newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->currentText() );

		insertPage ( newprofilewizardauthselectionpage, "<b>" + i18n ( "Authentication settings" ) + "</b>", indexOf ( currentpage ) + 1 );
		insertPage ( newprofilewizardnetworkpage, "<b>" + i18n ( "Network settings" ) + "</b>", indexOf ( currentpage ) + 2 );
		insertPage ( newprofilewizardnetworkroutepage, "<b>" + i18n ( "Network routes" ) + "</b>", indexOf ( currentpage ) + 3 );
		insertPage ( newprofilewizardnatpage, "<b>" + i18n ( "NAT settings" ) + "</b>", indexOf ( currentpage ) + 4 );

		profileData->setUserdefiniedCipher ( newprofilewizardopenvpnpagecontent->UserdefiniedCipherComboBox->currentText() );
		profileData->setUseUserdefiniedCipher ( newprofilewizardopenvpnpagecontent->UseUserdefiniedCipherCheckBox->isChecked() );

		profileData->setRemotePort ( newprofilewizardopenvpnpagecontent->UserdefinedPortSpinBox->value() );
		profileData->setUseRemotePort ( newprofilewizardopenvpnpagecontent->UseUserdefinedPortCheckBox->isChecked() );

		if ( newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox->isChecked() )
		{
			if ( newprofilewizardopenvpnpagecontent->TlsAuthURLRequester->url().isEmpty() )
			{
				ok = false;
				msg += i18n ( "TLS auth file" ) + "\n";
			}
			else
			{
				profileData->setUseTlsAuth ( true );
				profileData->setTlsAuthFile ( newprofilewizardopenvpnpagecontent->TlsAuthURLRequester->url() );
			}
		}

		if ( newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox->isChecked() )
		{
			if ( newprofilewizardopenvpnpagecontent->TlsRemoteHostLineEdit->text().isEmpty() )
			{
				ok = false;
				msg += i18n ( "TLS remote host" ) + "\n";
			}
			else
			{
				profileData->setUseTlsRemoteHost ( newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox->isChecked() );
				profileData->setTlsRemoteHost ( newprofilewizardopenvpnpagecontent->TlsRemoteHostLineEdit->text() );
			}
		}

		profileData->setDisableLzoCompression ( newprofilewizardopenvpnpagecontent->DisableLzoCompressionCheckBox->isChecked() );

		if ( newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox->isChecked() )
		{
			if ( newprofilewizardopenvpnpagecontent->HttpProxyLineEdit->text().isEmpty() )
			{
				ok = false;
				msg += i18n ( "HTTP proxy host" ) + "\n";
			}
			else
			{
				profileData->setUseHttpProxy ( newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox->isChecked() );
				profileData->setHttpProxy ( newprofilewizardopenvpnpagecontent->HttpProxyLineEdit->text( ) );
			}
		}

		if ( newprofilewizardopenvpnpagecontent->AllowIpAddressChangeOfPeerCheckBox->isChecked() )
			profileData->setAllowIpAddressChangeOfPeer ( true );
		else
			profileData->setAllowIpAddressChangeOfPeer ( false );

		profileData->setHttpProxyPort ( newprofilewizardopenvpnpagecontent->HttpProxyPortIntNumInput->value( ) );
		profileData->setHttpProxyTimeout ( newprofilewizardopenvpnpagecontent->HttpProxyTimeoutIntSpinBox->value() );


	}
	else if ( currentpage == newprofilewizardauthselectionpage )
	{
		if ( newprofilewizardauthselectioncontent->PskRadioButton->isChecked() )
		{
			useCert = false;

			profileData->setAuthType ( VpnAccountData::psk );
			insertPage ( newprofilewizardpskpage, "<b>" + i18n ( "PSK settings" ) + "</b>", indexOf ( currentpage ) + 1 );

			// racoon or freeswan
			if ( profileData->getConnectionType() == VpnAccountData::freeswan || profileData->getConnectionType() == VpnAccountData::racoon ||
			        profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon )
			{
				newprofilewizardpskcontent->PSKLineEdit->setEnabled ( true );
				newprofilewizardfreeswanpagecontent->UseXauthCheckBox->setEnabled ( true );
				newprofilewizardracoonpagecontent->UseXauthCheckBox->setEnabled ( true );
			}

			else if ( profileData->getConnectionType() == VpnAccountData::openvpn )
			{
				newprofilewizardpskcontent->PSKLineEdit->setEnabled ( true );
				newprofilewizardpskcontent->LabelPsk->setEnabled ( true );
			}

			else if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
			{
				insertPage ( newprofilewizardciscomanuallypage, "<b>" + i18n ( "Cisco settings" ) + "</b>", indexOf ( currentpage ) + 1 );
				removePage( newprofilewizardpskpage);
			}
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Auth selection: use PSK" ), KVpncConfig::debug );
		}
		if ( newprofilewizardauthselectioncontent->CertificateRadioButton->isChecked() )
		{
			useCert = true;
			profileData->setAuthType ( VpnAccountData::cert );

			newprofilewizardcertcontent->x509certURLRequester->show();
			newprofilewizardcertcontent->x509certURLRequester->sizeHint();
			newprofilewizardcertcontent->x509certComboBox->hide();


			if (profileData->getConnectionType() != VpnAccountData::ciscoorig)
				insertPage ( newprofilewizardp12certselectionpage, "<b>" + i18n ( "Certificate format" ) + "</b>", indexOf ( currentpage ) + 1 );
			// racoon or freeswan
			if ( profileData->getConnectionType() == VpnAccountData::freeswan || profileData->getConnectionType() == VpnAccountData::racoon ||
			        profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon )
			{
				newprofilewizardcertcontent->x509certURLRequester->setEnabled ( true );
				newprofilewizardcertcontent->LabelCertificate->setEnabled ( true );
				newprofilewizardcertcontent->certpathURLRequester->setEnabled ( true );
				newprofilewizardcertcontent->LabelCertificatePath->setEnabled ( true );

				newprofilewizardfreeswanpagecontent->UseXauthCheckBox->setEnabled ( false );
				newprofilewizardracoonpagecontent->UseXauthCheckBox->setEnabled ( false );
			}

			else if ( profileData->getConnectionType() == VpnAccountData::openvpn )
			{
				newprofilewizardcertcontent->CaCertpathURLRequester->setEnabled ( true );
				newprofilewizardcertcontent->certpathURLRequester->setEnabled ( true );
				newprofilewizardcertcontent->LabelCertificatePath->setEnabled ( true );


				if ( profileData->getUseOnlyCaCertAndUserAuth() )
				{
					newprofilewizardcertcontent->x509certURLRequester->setEnabled ( false );
					newprofilewizardcertcontent->privkeypathURLRequester->setEnabled ( false );
					newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled ( false );
					newprofilewizardcertcontent->LabelPrivateKeyPath->setEnabled ( false );
					newprofilewizardcertcontent->LabelCertificate->setEnabled ( false );
					newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled ( false );

				}
				else
				{
					newprofilewizardcertcontent->x509certURLRequester->setEnabled ( true );
					newprofilewizardcertcontent->privkeypathURLRequester->setEnabled ( true );
					newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled ( true );
					newprofilewizardcertcontent->LabelPrivateKeyPath->setEnabled ( true );
					newprofilewizardcertcontent->LabelCertificate->setEnabled ( true );
					newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled ( true );
				}
			}

			else if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
			{
				newprofilewizardcertcontent->x509certURLRequester->setEnabled ( true );
				newprofilewizardcertcontent->LabelCertificate->setEnabled ( true );
				newprofilewizardcertcontent->certpathURLRequester->setEnabled ( false );
				newprofilewizardcertcontent->LabelCertificatePath->setEnabled ( false );
				newprofilewizardcertcontent->certpathURLRequester->hide();
				newprofilewizardcertcontent->LabelCertificatePath->hide();
				newprofilewizardcertcontent->UseSmartcardCheckBox->hide();
				newprofilewizardcertcontent->SmartcardGroupBox->hide();
				newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox->hide();
				newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox->hide();
				newprofilewizardcertcontent->SpecialServerCertificateURLRequester->hide();
				newprofilewizardcertcontent->CaCertpathURLRequester->hide();
				newprofilewizardcertcontent->RemoteIDLineEdit->hide();
				newprofilewizardcertcontent->LabelPrivateKeyPath->hide();
				newprofilewizardcertcontent->privkeypathURLRequester->hide();
				newprofilewizardcertcontent->LabelCaCertificatePath->hide();
				newprofilewizardcertcontent->CertificateGroupBox->resize(newprofilewizardcertcontent->CertificateGroupBox->sizeHint());
				

				insertPage ( newprofilewizardcertpage, "<b>" + i18n ( "Certificate settings" ) + "</b>", indexOf ( currentpage ) + 1 );
				
				
// 				newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->hide();
// 				newprofilewizardciscomanuallypagecontent->LabelPsk->hide();
// 				newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit->hide();
// 				newprofilewizardciscomanuallypagecontent->CheckSavePsk->hide();

				if ( importCertificate() )
				{
					// success :)
				}
				else
				{
					newProfileCreated = false;
				}
				newprofilewizardcertcontent->LabelPrivateKeyPassword->setText("Certificate password:");
				// newprofilewizardcertcontent->LabelCertificate->setText(i18n("Certificate (enter name here):"));
				newprofilewizardcertcontent->x509certURLRequester->hide();
				newprofilewizardcertcontent->x509certComboBox->show();
				newprofilewizardcertcontent->x509certComboBox->sizeHint();
				newprofilewizardcertcontent->x509certComboBox->setCurrentItem(0);
				
			}

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Auth selection: use certificate" ), KVpncConfig::debug );
		}
		if ( newprofilewizardauthselectioncontent->HybridRadioButton->isChecked() )
		{
			useCert = false;

			profileData->setAuthType ( VpnAccountData::hybrid );
			insertPage ( newprofilewizardcertpage, "<b>" + i18n ( "Certificate settings" ) + "</b>", indexOf ( currentpage ) + 1 );

			// racoon or freeswan
			if ( profileData->getConnectionType() == VpnAccountData::racoon  || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon )
			{
				newprofilewizardpskcontent->PSKLineEdit->setEnabled ( true );
				newprofilewizardfreeswanpagecontent->UseXauthCheckBox->setEnabled ( true );
				newprofilewizardracoonpagecontent->UseXauthCheckBox->setEnabled ( true );

				newprofilewizardcertpage->setEnabled(true);
				newprofilewizardcertcontent->x509certComboBox->setEnabled(false);
				newprofilewizardcertcontent->x509certURLRequester->setEnabled(false);
				newprofilewizardcertcontent->CaCertpathURLRequester->setEnabled(true);
				newprofilewizardcertcontent->certpathURLRequester->setURL("/etc/racoon/certs");
				newprofilewizardcertcontent->LabelCertificate->setEnabled(false);
				newprofilewizardcertcontent->LabelPrivateKeyPath->setEnabled(false);
				newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled(false);
				newprofilewizardcertcontent->SpecialServerCertificateURLRequester->setEnabled(false);
				newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled(false);
				newprofilewizardcertcontent->RemoteIDLineEdit->setEnabled(false);
				newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox->setEnabled(false);
				newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox->setEnabled(false);
				newprofilewizardcertcontent->privkeypathURLRequester->setEnabled(false);
				newprofilewizardpskcontent->setEnabled(false);


			}
			else if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
			{
				insertPage ( newprofilewizardciscomanuallypage, "<b>" + i18n ( "Cisco settings" ) + "</b>", indexOf ( currentpage ) + 1 );
				removePage( newprofilewizardpskpage);
			}
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Auth selection: use Hybrid" ), KVpncConfig::debug );
		}
	}
	else if ( currentpage == newprofilewizardp12certselectionpage )
	{
		insertPage ( newprofilewizardcertpage, "<b>" + i18n ( "Certificate settings" ) + "</b>", indexOf ( currentpage ) + 1 );

		if ( newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->isChecked() )
		{
			profileData->setUseSmartcard ( true );
			newprofilewizardcertcontent->UseSmartcardCheckBox->setChecked ( true );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "P12 cert selection: use smartcard" ), KVpncConfig::debug );
		}
		else
		{
			if ( newprofilewizardp12certselectioncontent->P12CertYesRadioButton->isChecked() )
			{
				// yes we have p12 cert
				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "P12 cert selection: cert type is PKCS12" ), KVpncConfig::debug );

				if ( importCertificate() )
				{
					// success :)
				}
				else
				{
					newProfileCreated = false;
				}
			}
			else
			{

				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "P12 cert selection: cert type is other" ), KVpncConfig::debug );
			}
		}
	}
	else if ( currentpage == newprofilewizardopenvpnselectionpage )
	{
		if ( newprofilewizardopenvpnselectionpagecontent->OpenvpnImportRadioButton->isChecked() )
		{
			enterdatamanually = false;
			removePage ( newprofilewizardopenvpnpage );
			removePage ( newprofilewizardopenvpnauthpage );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN selection: import profile file" ), KVpncConfig::debug );

			// 			removePage ( newprofilewizardgeneralpage );
			removePage ( newprofilewizardvirtualipaddresspage );

			if ( importProfile ( VpnAccountData::openvpn ) == true )
			{
				newProfileCreated = true;
				newprofilewizardgeneralpagecontent->NameLineEdit->setText ( profileData->getName() );
				newprofilewizardgeneralpagecontent->gatewayLineEdit->setText ( profileData->getGateway() );
				newprofilewizardgeneralpagecontent->DescriptionLineEdit->setText ( profileData->getDescription() );

				if ( profileData->getAuthWithUsernameAndPassword() )
				{
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: authenticate with username and password" ), KVpncConfig::debug );
					insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );
				}
			}
			else
			{
				newProfileCreated = false;
				ok = false;
			}
		}
		else
		{
			enterdatamanually = true;
			insertPage ( newprofilewizardopenvpnpage, "<b>" + i18n ( "OpenVPN settings" ) + "</b>", indexOf ( currentpage ) + 1 );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN selection: enter data manually" ), KVpncConfig::debug );
		}

	}
	else if ( currentpage == newprofilewizardopenvpnauthpage )
	{
		if ( newprofilewizardopenvpnauthpagecontent->AuthWithUsernameAndPasswordCheckBox->isChecked() )
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: authenticate with username and password" ), KVpncConfig::debug );
			insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );

			profileData->setAuthWithUsernameAndPassword ( true );

			if ( newprofilewizardopenvpnauthpagecontent->UseOnlyCaCertAndUserAuthCheckBox->isChecked() )
			{
				profileData->setUseOnlyCaCertAndUserAuth ( true );

				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: use only CA cert authenticate with username and password" ), KVpncConfig::debug );
			}
			else
			{
				profileData->setUseOnlyCaCertAndUserAuth ( false );

			}
		}
		else
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: dont authenticate with username and password" ), KVpncConfig::debug );

			profileData->setAuthWithUsernameAndPassword ( false );
			profileData->setUseOnlyCaCertAndUserAuth ( false );
		}

		if ( newprofilewizardopenvpnauthpagecontent->UseAuthenticationAlgorithmCheckBox->isChecked() )
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: use special authentication algorithm: %1" ).arg ( newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->currentText() ), KVpncConfig::debug );
			profileData->setUseAuthenticationAlgorithm ( true );
			profileData->setAuthenticationAlgorithm ( newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->currentText() );
		}
		else
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: dont use special authentication algorithm" ), KVpncConfig::debug );
			profileData->setUseAuthenticationAlgorithm ( false );
		}

		profileData->setAuthenticationAlgorithm ( newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->currentText() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "OpenVPN auth: use authentication method: %1" ).arg ( profileData->getAuthenticationAlgorithm() ), KVpncConfig::debug );


	}
	else if ( currentpage == newprofilewizardpptppage )
	{

		msg = i18n ( "These fields must be filled in:\n" );
		profileData->setAllowStatefulMode( newprofilewizardpptppagecontent->AllowStatefulModeCheckbox->isChecked() );
		profileData->setUseNoIpDefault( newprofilewizardpptppagecontent->UseNoIpDefaultCheckbox->isChecked() );
		profileData->setDisableMPPEComp( newprofilewizardpptppagecontent->UseNoMPPECompressionCheckbox->isChecked() );
		profileData->setRequireMppe( newprofilewizardpptppagecontent->RequireMppeCheckbox->isChecked() );
		profileData->setRefuse128BitEncryption( newprofilewizardpptppagecontent->Refuse128BitEncryptionCheckbox->isChecked() );
		profileData->setRefuse40BitEncryption( newprofilewizardpptppagecontent->Refuse40BitEncryptionCheckbox->isChecked() );
		profileData->setDisableMPPEComp( newprofilewizardpptppagecontent->UseNoMPPECompressionCheckbox->isChecked() );
		profileData->setUseGetDnsFromPeer( newprofilewizardpptppagecontent->GetDnsFromPeerCheckbox->isChecked() );
		profileData->setUseNoBsdComp( newprofilewizardpptppagecontent->UseNoBsdCompCheckbox->isChecked() );
		profileData->setUseNoDeflate( newprofilewizardpptppagecontent->UseNoDeflateCheckbox->isChecked() );
		profileData->setDisableHeaderCompression(newprofilewizardpptppagecontent->DisableHeaderCompressionCheckbox->isChecked());
		profileData->setDisableMagicNumberNegotiation(newprofilewizardpptppagecontent->DisableMagicNumberNegotiationCheckbox->isChecked());
		profileData->setDisableIpx(newprofilewizardpptppagecontent->DisableIpxCheckbox->isChecked());
		profileData->setDisableAdressControlCompression(newprofilewizardpptppagecontent->DisableAdressControlCompressionCheckbox->isChecked());
		profileData->setDisableProtocolFieldCompression(newprofilewizardpptppagecontent->DisableProtocolFieldCompressionCheckbox->isChecked());
		profileData->setRequireEap(newprofilewizardpptppagecontent->RequireEapCheckbox->isChecked());
		
		if ( newprofilewizardpptppagecontent->DnsServerCheckbox->isChecked() )
		{
			profileData->setUseDnsServer( true );
			profileData->setDnsServer( newprofilewizardpptppagecontent->DnsServerLineedit->text() );
			
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Using custom DNS server: %1" ).arg ( profileData->getDnsServer() ), KVpncConfig::debug );
		}
		else
		{
			profileData->setUseDnsServer( false );
		}
		
		if ( newprofilewizardpptppagecontent->UseSearchDomainInResolvConfCheckbox ->isChecked() )
		{
			profileData->setUseSearchDomainInResolvConf(true);
			profileData->setSearchDomainInResolvConf(newprofilewizardpptppagecontent->SearchDomainInResolvConfLineedit->text());
			
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Using custom DNS search domain: %1" ).arg ( profileData->getSearchDomainInResolvConf() ), KVpncConfig::debug );
		}
		else
		{
			profileData->setUseSearchDomainInResolvConf(false);
		}
		
		if ( newprofilewizardpptppagecontent->AuthMethodComboBox->currentItem() == 0 )
			profileData->setAuthMethod ( "chap" );
		if ( newprofilewizardpptppagecontent->AuthMethodComboBox->currentItem() == 1 )
			profileData->setAuthMethod ( "pap" );
		if ( newprofilewizardpptppagecontent->AuthMethodComboBox->currentItem() == 2 )
			profileData->setAuthMethod ( "mschap" );
		if ( newprofilewizardpptppagecontent->AuthMethodComboBox->currentItem() == 3 )
			profileData->setAuthMethod ( "mschap-v2" );

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			GlobalConfig->appendLogEntry ( i18n ( "Using auth method: %1" ).arg ( profileData->getAuthMethod() ), KVpncConfig::debug );

		newprofilewizardnetworkcontent->LabelRemoteNetwork->hide();
		newprofilewizardnetworkcontent->RemoteNetMaskComboBox->hide();
		newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->hide();
		newprofilewizardnetworkcontent->RemoteNetDividetextLabel->hide();
		newprofilewizardnetworkcontent->UseRemoteNetworkCheckBox->hide();
		newprofilewizardnetworkcontent->RemoteNetworkGroupBox->hide();

		insertPage ( newprofilewizarduserpage, "<b>" + i18n ( "User settings" ) + "</b>", indexOf ( currentpage ) + 1 );

	}
	else if ( currentpage == newprofilewizardvtunpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		profileData->setUseLocalPort ( newprofilewizardvtunpagecontent->PortCheckbox->isChecked() );
		profileData->setLocalPort ( newprofilewizardvtunpagecontent->PortSpinbox->value() );

		if ( newprofilewizardvtunpagecontent->PortCheckbox->isChecked() )
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Vtun: use userdefined port: %1" ).arg ( QString().setNum ( newprofilewizardvtunpagecontent->PortSpinbox->value() ) ), KVpncConfig::debug );
		}

		if ( newprofilewizardvtunpagecontent->VtunProfileLineEdit->text().isEmpty() )
		{
			KMessageBox::error ( this, i18n ( "No profile name entered!" ), i18n ( "No profile name" ) );
			ok = false;
			msg += "- " + i18n ( "Vtun profile name" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "No profile name entered!" ), GlobalConfig->error );
		}
		else
			profileData->setVtunProfile ( newprofilewizardvtunpagecontent->VtunProfileLineEdit->text() );
	}
	else if ( currentpage == newprofilewizardsshpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		profileData->setUseRemotePort( newprofilewizardsshpagecontent->UseUserdefinedRemotePortCheckBox->isChecked() );
		profileData->setRemotePort ( newprofilewizardsshpagecontent->UserdefinedRemotePortSpinBox->value() );

		if ( newprofilewizardsshpagecontent->UseUserdefinedRemotePortCheckBox->isChecked() )
		{
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use userdefined port: %1" ).arg ( QString().setNum ( newprofilewizardsshpagecontent->UserdefinedRemotePortSpinBox->value() ) ), KVpncConfig::debug );
		}
	
		// password or key auth
		if (newprofilewizardsshpagecontent->AuthPassRadioButton->isChecked())
		{
			profileData->setAuthWithUsernameAndPassword(true);
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use user password authentication" ) , KVpncConfig::debug );
		}
		else
		{
			profileData->setAuthWithUsernameAndPassword(false);
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use key authentication" ) , KVpncConfig::debug );
		}

		profileData->setPreSharedKeyFile(newprofilewizardsshpagecontent->CostumkeyURLRequester->url());

		if (newprofilewizardsshpagecontent->CostumKeyRadioButton->isChecked())
		{
			profileData->setPskIsInFile(newprofilewizardsshpagecontent->CostumKeyRadioButton->isChecked());
			profileData->setPreSharedKeyFile(newprofilewizardsshpagecontent->CostumkeyURLRequester->url());
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use costum key: %1" ).arg(newprofilewizardsshpagecontent->CostumkeyURLRequester->url()) , KVpncConfig::debug );
		}
		else
		{
			profileData->setPreSharedKey(newprofilewizardsshpagecontent->SshKeyComboBox->currentText());
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use autotected key: %1" ).arg(newprofilewizardsshpagecontent->SshKeyComboBox->currentText()) , KVpncConfig::debug );
		}

		if (newprofilewizardsshpagecontent->UseSshConfigRemoteScriptCheckBox->isChecked() && !newprofilewizardsshpagecontent->SshConfigRemoteScriptLineEdit->text().isEmpty())
		{
			profileData->setUseSshConfigRemoteScript(true);
			profileData->setSshConfigRemoteScript(newprofilewizardsshpagecontent->SshConfigRemoteScriptLineEdit->text());

			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "SSH: use ssh config remote script: %1" ).arg(newprofilewizardsshpagecontent->SshConfigRemoteScriptLineEdit->text()) , KVpncConfig::debug );

		}
		else
			profileData->setUseSshConfigRemoteScript(false);

		if (newprofilewizardsshpagecontent->UseSshConfigRemoteScriptCheckBox->isChecked() && newprofilewizardsshpagecontent->SshConfigRemoteScriptLineEdit->text().isEmpty())
		{
				ok = false;
				msg += "- " + i18n ( "Special server certificate" ) + "\n";
				GlobalConfig->appendLogEntry( i18n( "%1 cant be empty!" ).arg(i18n("ssh config remote script")), GlobalConfig->error);
		}

	}
	else if ( currentpage == newprofilewizardvirtualipaddresspage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		bool IPOk=true;
		QString wrongAddress="";
		ok = true;



		if ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() &&  !profilenetworkvirtualipoptionscontent->LocalVirtualIpEdit->text().isEmpty() )
		{
			QString LocalVirtualIp = profilenetworkvirtualipoptionscontent->LocalVirtualIpEdit->text();
			if ( Utils ( GlobalConfig ).isValidIPv4Address ( LocalVirtualIp ) == false )
			{
				// 			KMessageBox::error ( this, i18n( "No valid IP address for local IP address entered!" ), i18n( "No Valid IP Address" ) );
				IPOk=false;
				wrongAddress=i18n ( "local IP address" );
				ok=false;
			}
			else
			{
				profileData->setLocalVirtualIP ( LocalVirtualIp );
			}
		}
		else
		{
			msg += "- " + i18n ( "Local IP address for virtual IP" ) + "\n";
			ok =false;
			IPOk=false;
		}

		if ( profileData->getConnectionType() != VpnAccountData::openvpn || profileData->getConnectionType() != VpnAccountData::ssh )
		{
			if(profileData->getTunnelDeviceType() == "tun")
			{
				if ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() && !profilenetworkvirtualipoptionscontent->RemoteVirtualIpLineEdit->text().isEmpty() )
				{
					QString RemoteVirtualIp = profilenetworkvirtualipoptionscontent->RemoteVirtualIpLineEdit->text();
					if ( Utils ( GlobalConfig ).isValidIPv4Address ( RemoteVirtualIp ) == false )
					{
		
						IPOk=false;
						ok=false;
						if ( wrongAddress=="" )
							wrongAddress = i18n ( "remote IP address" );
						else
							wrongAddress = i18n ( "local and remote IP address" );
					}
					else
					{
						profileData->setRemoteVirtualIP ( RemoteVirtualIp );
					}
				}
				else
				{
					msg += "- " + i18n ( "Remote IP address for virtual IP" ) + "\n";
					ok =false;
					IPOk=false;
		
				}
			}
			if (profileData->getTunnelDeviceType() == "tap")
			{
				QString RemoteVirtualIp = profilenetworkvirtualipoptionscontent->RemoteVirtualIpLineEdit->text();
				if (Utils( GlobalConfig ).isValidIPv4Netmask (RemoteVirtualIp) == false)
				{
					KMessageBox::error ( this, i18n( "No valid netmask entered!" ), i18n( "No valid netmask" ) );
					IPOk=false;
				}
				else
				{
					profileData->setRemoteVirtualIP( RemoteVirtualIp);
				}
			}
		}


		if ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() && IPOk )
		{
			profileData->setUseVirtualIP ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() );

			if ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() )
			{

				if (profileData->getTunnelDeviceType() == "tun")
				{
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Using virtual IP addresses (local: %1, remote: %2): " ).arg ( profileData->getLocalVirtualIP() ).arg ( profileData->getRemoteVirtualIP() ), KVpncConfig::debug );
				}
				if (profileData->getTunnelDeviceType() == "tap")
				{
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "Using virtual IP address (local: %1, netmask: %2): " ).arg ( profileData->getLocalVirtualIP() ).arg ( profileData->getRemoteVirtualIP() ), KVpncConfig::debug );
				}
			}
			else
			{
				if ( GlobalConfig->KvpncDebugLevel > 0 )
					GlobalConfig->appendLogEntry ( i18n ( "Not using virtual IP addresses" ), KVpncConfig::debug );
			}
		}
		else
		{
			if ( wrongAddress!= "" )
				KMessageBox::error ( this, i18n ( "No valid IP address for %1 entered!" ).arg ( wrongAddress ), i18n ( "No Valid IP Address" ) );
			profileData->setUseVirtualIP ( false );
		}

		if ( !profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() )
			ok=true;

	}
	else if ( currentpage == newprofilewizardpskpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		if ( newprofilewizardpskcontent->CheckSavePsk->isChecked() )
		{
			if ( !newprofilewizardpskcontent->PskInFileCheckBox->isChecked() )
			{
				profileData->setSavePsk ( true );
				profileData->setPskIsInFile ( false );
				if ( !newprofilewizardpskcontent->PSKLineEdit->text().isEmpty() )
				{
					profileData->setPreSharedKey ( newprofilewizardpskcontent->PSKLineEdit->text() );
				}
				else
				{
					msg += "- " + i18n ( "Pre shared key" ) + "\n";
					ok = false;
				}
			}
			else
			{
				profileData->setSavePsk ( true );
				profileData->setPskIsInFile ( true );
				if ( !newprofilewizardpskcontent->PSKFileURLRequester->url().isEmpty() )
				{
					profileData->setPreSharedKey ( newprofilewizardpskcontent->PSKLineEdit->text() );
				}
				else
				{
					ok = false;
					msg += "- " + i18n ( "Pre shared key file" ) + "\n";
				}
			}

		}
		else
		{
			profileData->setSavePsk ( false );
		}

		if ( newprofilewizardpskcontent->PskInFileCheckBox->isChecked() )
		{
			profileData->setSavePsk ( newprofilewizardpskcontent->CheckSavePsk->isChecked() );
			if ( !newprofilewizardpskcontent->PSKFileURLRequester->url().isEmpty() )
			{
				profileData->setPreSharedKeyFile ( newprofilewizardpskcontent->PSKFileURLRequester->url() );
			}
			else
			{
				ok = false;
				msg += "- " + i18n ( "Pre shared key file" ) + "\n";
			}
		}
		if ( newprofilewizardpskcontent->CheckSavePsk->isChecked() )
			profileData->setPreSharedKey ( newprofilewizardpskcontent->PSKLineEdit->text( ) );
		else
			profileData->setPreSharedKey ( "" );

		profileData->setPreSharedKey ( newprofilewizardpskcontent->PSKLineEdit->text() );

	}
	else if ( currentpage == newprofilewizardcertpage )
	{
		
		profileData->setSpecialRemoteID ( newprofilewizardcertcontent->RemoteIDLineEdit->text() );
		profileData->setUseSpecialRemoteID ( newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox->isChecked() );
		profileData->setX509Certificate ( newprofilewizardcertcontent->x509certURLRequester->url() );
		profileData->setCaCertificate ( newprofilewizardcertcontent->CaCertpathURLRequester->url() );
		profileData->setCertPath ( newprofilewizardcertcontent->certpathURLRequester->url() );
		profileData->setPrivateKey ( newprofilewizardcertcontent->privkeypathURLRequester->url() );
		profileData->setPrivateKeyPass ( newprofilewizardcertcontent->PrivkeyPasswordEdit->text() );
		profileData->setX509Certificate ( newprofilewizardcertcontent->x509certURLRequester->url() );
		profileData->setCertPath ( newprofilewizardcertcontent->certpathURLRequester->url() );
		profileData->setUseSpecialServerCertificate ( newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox->isChecked() );
		profileData->setSpecialServerCertificate ( newprofilewizardcertcontent->SpecialServerCertificateURLRequester->url() );

		if ( !newprofilewizardcertcontent->PrivkeyPasswordEdit->text().isEmpty() )
			profileData->setSavePrivateKeyPassword ( true );
		else
			profileData->setSavePrivateKeyPassword ( false );

		msg = i18n ( "These fields must be filled in:\n" );

		if ( newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox->isChecked() )
		{
			if ( newprofilewizardcertcontent->SpecialServerCertificateURLRequester->url().isEmpty() )
			{
				ok = false;
				msg += "- " + i18n ( "Special server certificate" ) + "\n";
				// 				KMessageBox::error ( this, i18n( "Special server certificate can't be empty!" ), i18n( "No Server Certificate" ) );
				GlobalConfig->appendLogEntry ( i18n ( "Special server certificate can't be empty!" ) , GlobalConfig->error );
			}
		}

		if ( newprofilewizardcertcontent->CaCertpathURLRequester->url().isEmpty() )
		{
			ok = false;
			msg += "- " + i18n ( "CA certificate" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "CA Certificate can't be empty!" ) , GlobalConfig->error );
		}

		if ( !newprofilewizardcertcontent->UseSmartcardCheckBox->isChecked() &&  !profileData->getAuthType() == VpnAccountData::hybrid)
		{
			if ( (!profileData->getUseOnlyCaCertAndUserAuth() && newprofilewizardcertcontent->x509certURLRequester->url().isEmpty()) || ( profileData->getConnectionType() == VpnAccountData::ciscoorig && newprofilewizardcertcontent->x509certURLRequester->url().isEmpty())) 
			{
				ok = false;
				msg += "- " + i18n ( "Certificate" ) + "\n";
				GlobalConfig->appendLogEntry ( i18n ( "Certificate can't be empty!" ) , GlobalConfig->error );
			}

			if ( !profileData->getUseOnlyCaCertAndUserAuth() && newprofilewizardcertcontent->privkeypathURLRequester->url().isEmpty() &&  !profileData->getAuthType() == VpnAccountData::hybrid)
			{
				ok = false;
				msg += "- " + i18n ( "Path to private key" ) + "\n";
				GlobalConfig->appendLogEntry ( i18n ( "Path to private key can't be empty!" ) , GlobalConfig->error );
			}
// 			if ( ! ( profileData->getConnectionType() == VpnAccountData::racoon || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon ) && !profileData->getUseOnlyCaCertAndUserAuth() && newprofilewizardcertcontent->PrivkeyPasswordEdit->text().isEmpty() )
// 			{
// 				if ( Utils ( GlobalConfig ).getNeedsPassphrase ( newprofilewizardcertcontent->privkeypathURLRequester->url() ) )
// 				{
// 					ok = false;
// 					msg += "- " + i18n ( "Private key password, private key needs passphrase" ) + "\n";
// 					GlobalConfig->appendLogEntry ( i18n ( "Private key password can't be empty  because private key is protected with a passphrase." ) , GlobalConfig->error );
// 				}
// 			}

		}
		else
		{
			if ( newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText().isEmpty() || newprofilewizardcertcontent->Pkcs11IdComboBox->currentText().isEmpty() )
				nextButton()->setEnabled ( false );
			else
				nextButton()->setEnabled ( true );
		}
		if ( newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox->isChecked() )
		{
			if ( newprofilewizardcertcontent->RemoteIDLineEdit->text().isEmpty() )
			{
				ok = false;
				msg += "- " + i18n ( "Special remote ID" ) + "\n";
				// 				KMessageBox::error ( this, i18n( "Special server certificate can't be empty!" ), i18n( "No Server Certificate" ) );
				GlobalConfig->appendLogEntry ( i18n ( "Special remote ID can't be empty!" ) , GlobalConfig->error );
			}
		}


		if ( newprofilewizardcertcontent->UseSmartcardCheckBox->isEnabled() && newprofilewizardcertcontent->UseSmartcardCheckBox->isChecked() )
		{
			if ( !newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText().isEmpty() )
				profileData->setPkcs11Slot ( newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText() );
			else
			{
				KMessageBox::error ( this, i18n ( "Slot at smartcard can't be empty!" ), i18n ( "No smartcard slot" ) );
				// 			GlobalConfig->appendLogEntry( i18n( "Slot at smartcard can't be empty!" ) ,GlobalConfig->error);
				ok = false;
			}
			if ( !newprofilewizardcertcontent->Pkcs11IdComboBox->currentText().isEmpty() )
				profileData->setPkcs11Id ( newprofilewizardcertcontent->Pkcs11IdComboBox->currentText() );
			else
			{
				KMessageBox::error ( this, i18n ( "ID for certificate at smartcard can't be empty!" ), i18n ( "No certificate ID" ) );
				// 			GlobalConfig->appendLogEntry( i18n( "ID for certificate at smartcard can't be empty!" ) ,GlobalConfig->error);
				ok = false;
			}
			QString Pkcs11SlotType = newprofilewizardcertcontent->Pkcs11SlotTypeComboBox->currentText();
			if ( Pkcs11SlotType == i18n ( "ID" ) )
				profileData->setPkcs11SlotType ( "id" );
			else if ( Pkcs11SlotType == i18n ( "Name" ) )
				profileData->setPkcs11SlotType ( "name" );
			else
				profileData->setPkcs11SlotType ( "label" );

			QString Pkcs11IdType = newprofilewizardcertcontent->Pkcs11IdTypeComboBox->currentText();
			if ( Pkcs11IdType == i18n ( "ID" ) )
				profileData->setPkcs11IdType ( "id" );
			else if ( Pkcs11IdType == i18n ( "Label" ) )
				profileData->setPkcs11IdType ( "label" );
			else
				profileData->setPkcs11IdType ( "subject" );

			QString Pkcs11SignMode = newprofilewizardcertcontent->Pkcs11SignModeComboBox->currentText();
			if ( Pkcs11SignMode == i18n ( "auto" ) )
				profileData->setPkcs11SignMode ( "auto" );
			else if ( Pkcs11SignMode == i18n ( "sign" ) )
				profileData->setPkcs11SignMode ( "sign" );
			else if ( Pkcs11SignMode == i18n ( "recover" ) )
				profileData->setPkcs11SignMode ( "recover" );
			else
				profileData->setPkcs11SignMode ( "any" );

			if ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox->isChecked() )
			{
				if ( !newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url().isEmpty() )
					profileData->setPkcs11Providers ( newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url() );
				else
				{
					KMessageBox::error ( this, i18n ( "Library path to lib for use with smartcard can't be empty!" ), i18n ( "No providers lib" ) );
					// 			GlobalConfig->appendLogEntry( i18n( "Library path to lib for use with smartcard can't be empty!" ) ,GlobalConfig->error);
					ok = false;
				}
			}
			profileData->setUsePkcs11Providers ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox->isChecked() );
		}

	}
	else if ( currentpage == newprofilewizarduserpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		if ( newprofilewizarduserpagecontent->UsernameLineEdit->text().isEmpty() )
		{
			ok = false;
			msg += "- " + i18n ( "Username" ) + "\n";
			GlobalConfig->appendLogEntry ( i18n ( "Username  is empty!" ), GlobalConfig->error );
		}
		else
		{
			profileData->setUserName ( newprofilewizarduserpagecontent->UsernameLineEdit->text() );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "User options: username: %1" ).arg ( profileData->getUserName() ), KVpncConfig::debug );
		}

		if ( !newprofilewizarduserpagecontent->PasswordEdit->text().isEmpty() )
		{
			profileData->setUserPassword ( newprofilewizarduserpagecontent->PasswordEdit->text() );

		}
		else
		{
			if ( newprofilewizarduserpagecontent->CheckUserPass->isChecked() )
			{
				ok = false;
				msg += "- " + i18n ( "Password" ) + "\n";
				GlobalConfig->appendLogEntry ( i18n ( "Password  is empty but you have checked to store it!" ), GlobalConfig->error );
			}
		}
		profileData->setUserPassword ( newprofilewizarduserpagecontent->PasswordEdit->text() );
		profileData->setSaveUserPassword ( newprofilewizarduserpagecontent->CheckUserPass->isChecked() );

		profileData->setNtDomainName ( newprofilewizarduserpagecontent->NtDomainNameLineedit->text() );


		if ( profileData->getConnectionType () == VpnAccountData::cisco || profileData->getConnectionType() == VpnAccountData::pptp ||
		        profileData->getConnectionType () == VpnAccountData::l2tpd_racoon || profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan
		   )
		{
			if ( newprofilewizarduserpagecontent->NtDomainNameCheckbox->isChecked() )
			{
				if ( newprofilewizarduserpagecontent->NtDomainNameLineedit->text().isEmpty() )
				{
					ok = false;
					msg += "- " + i18n ( "NT domain name" ) + "\n";
					GlobalConfig->appendLogEntry ( i18n ( "NT domain name  is empty but you have checked to specifiy one!" ), GlobalConfig->error );
				}
				else
				{
					profileData->setNtDomainName ( newprofilewizarduserpagecontent->NtDomainNameLineedit->text() );
					profileData->setUseNtDomainName ( true );
					if ( GlobalConfig->KvpncDebugLevel > 0 )
						GlobalConfig->appendLogEntry ( i18n ( "User options: NT domain name: %1" ).arg ( profileData->getNtDomainName() ), KVpncConfig::debug );
				}
			}
			else
			{
				profileData->setUseNtDomainName ( false );
			}
		}
	}
	else if ( currentpage == newprofilewizardnetworkpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		bool validAddr = true;
		if ( ( profileData->getConnectionType() == VpnAccountData::freeswan || profileData->getConnectionType() == VpnAccountData::racoon ||
		        profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon ) )
		{
			if (newprofilewizardnetworkcontent->UseRemoteNetworkCheckBox->isChecked())
			{
				if ( !newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->text().isEmpty() )
				{
					if ( newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->text().contains ( '.' ) != 3 )
					{
						KMessageBox::error ( this, i18n ( "No remote network entered!" ), i18n ( "No remote network" ) );
						validAddr = false;
						return ;
					}
					else
					{
						QString addr = newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->text();
						int part0 = addr.section ( '.', 0, 0 ).toInt();
						int part1 = addr.section ( '.', 1, 1 ).toInt();
						int part2 = addr.section ( '.', 2, 2 ).toInt();
						int part3 = addr.section ( '.', 3, 3 ).toInt();

						/*
									LogOutput->append ("part0: "+QString().setNum(part0));
									LogOutput->append ("part1: "+QString().setNum(part1));
									LogOutput->append ("part2: "+QString().setNum(part2));
									LogOutput->append ("part3: "+QString().setNum(part3));
						*/

						if ( ( part0 < 1 || part0 > 254 ) || ( part1 < 0 || part1 > 254 ) || ( part2 < 0 || part2 > 254 ) || ( part3 < 0 || part3 > 254 ) )
						{
							KMessageBox::error ( this, i18n ( "Invalid values in IP address (remote net)!" ), i18n ( "Invalid Values in IP Address" ) );
							GlobalConfig->appendLogEntry ( i18n ( "Invalid values in IP address (remote net)!" ) , GlobalConfig->error );
							validAddr = false;
							return ;
						}

						if ( validAddr == true )
						{
							if ( GlobalConfig->KvpncDebugLevel > 0 )
								GlobalConfig->appendLogEntry ( i18n ( "Use remote network: %1/%2" ).arg ( addr ).arg(newprofilewizardnetworkcontent->RemoteNetMaskComboBox->currentText()), KVpncConfig::debug );
							profileData->setUseRemoteNetwork(true);
							profileData->setRemoteNetAddr ( addr );
							profileData->setRemoteNetMask ( newprofilewizardnetworkcontent->RemoteNetMaskComboBox->currentText() );
						}

					}
				}
				else
				{
					ok = false;
					msg += "- " + i18n ( "Remote network" ) + "\n";
					GlobalConfig->appendLogEntry ( i18n ( "Remote network  is empty!" ), GlobalConfig->error );
				}
			}
		}
		profileData->setNetworkDevice ( newprofilewizardnetworkcontent->NetworkDeviceComboBox->currentText() );

		profileData->setMtu ( newprofilewizardnetworkcontent->MtuSpinbox->value() );
		if ( newprofilewizardnetworkcontent->MtuCheckbox->isChecked() )
		{
			profileData->setUseMtu ( true );
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network options: use own MTU size: %1" ).arg ( profileData->getMtu() ) , GlobalConfig->debug );
		}
		else
			profileData->setUseMtu ( false );

		profileData->setMru ( newprofilewizardnetworkcontent->MruSpinbox->value() );
		if ( newprofilewizardnetworkcontent->MruCheckbox->isChecked() )
		{
			profileData->setUseMru ( true );
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network options: use own MRU size: %1" ).arg ( profileData->getMtu() ) , GlobalConfig->debug );
		}
		else
			profileData->setUseMru ( false );

		if ( profileData->getConnectionType() == VpnAccountData::ssh )
		{
			profileData->setTunnelDeviceType(newprofilewizardnetworkcontent->TunnelDeviceTypeComboBox->currentText());
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network options: Tunnel device type: %1" ).arg ( profileData->getTunnelDeviceType() ) , GlobalConfig->debug );

			tunnelDeviceTypeChanged(profileData->getTunnelDeviceType());
		}

	}
	else if ( currentpage == newprofilewizardnetworkroutepage )
	{
		msg = i18n ( "These fields must be filled in:\n" );

		if ( newprofilewizardnetworkroutecontent->DefaultRouteComboBox->currentItem() == 1 )
		{
			profileData->setReplaceDefaultRoute ( true );

			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network route options: replace default route"  ) , GlobalConfig->debug );
		}
		else
		{
			profileData->setReplaceDefaultRoute ( false );
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network route options: dont replace default route" )  , GlobalConfig->debug );
		}

		profileData->setUseAdditionalNetworkRoutes ( newprofilewizardnetworkroutecontent->UseExtraNetworkRoutesCheckbox->isChecked() );

		if ( newprofilewizardnetworkroutecontent->UseExtraNetworkRoutesCheckbox->isChecked() && newprofilewizardnetworkroutecontent->NetworkListView->childCount() > 0 )
		{
			if ( GlobalConfig->KvpncDebugLevel > 1 )
				GlobalConfig->appendLogEntry ( i18n ( "Network route options: use additional network routes" ) , GlobalConfig->debug );

			QStringList AdditionalNetworkRoutes;
			QListViewItemIterator it ( newprofilewizardnetworkroutecontent->NetworkListView );
			for ( ; it.current(); ++it )
			{
				// example entry:
				// <network>/<netmask>#<gateway>
				QString network = QString ( it.current() ->text ( 0 ) + "/" + it.current() ->text ( 1 ) );
				network.append ( "#" );
				network.append ( it.current() ->text ( 2 ) ); // gateway
				network.append ( "#" );
				network.append ( it.current() ->text ( 3 ) ); // interface
				AdditionalNetworkRoutes.append ( network );

				if ( GlobalConfig->KvpncDebugLevel > 1 )
					GlobalConfig->appendLogEntry ( i18n ( "Network route options: additional network: %1/%2 gw %3 %4" ).arg ( it.current() ->text ( 0 ) ).arg ( it.current() ->text ( 1 ) ).arg ( it.current() ->text ( 2 ) ).arg ( it.current() ->text ( 3 ) ) , GlobalConfig->debug );
			}
			profileData->setAdditionalNetworkRoutes ( AdditionalNetworkRoutes );
		}

	}
	else if ( currentpage == newprofilewizardnatpage )
	{
		profileData->setUseUdp ( newprofilewizardnatcontent->UseUdpCheckbox->isChecked() );
		profileData->setUseUdpPort ( newprofilewizardnatcontent->UdpPortCheckbox->isChecked() );
		profileData->setUdpPort ( newprofilewizardnatcontent->UdpPortSpinbox->value() );
		if ( GlobalConfig->KvpncDebugLevel > 0 )
		{
			if ( profileData->getUseUdp() )
				GlobalConfig->appendLogEntry ( i18n ( "NAT settings: use NAT" ), KVpncConfig::debug );
			else
				GlobalConfig->appendLogEntry ( i18n ( "NAT settings: use no NAT" ), KVpncConfig::debug );

			if ( profileData->getUseUdpPort() )
				GlobalConfig->appendLogEntry ( i18n ( "NAT settings: use userdefined Port: %1" ).arg ( QString().setNum ( profileData->getUdpPort() ) ), KVpncConfig::debug );
		}


	}
	else if ( currentpage == newprofilewizardconnectoptionspage )
	{
		connectaftercreating = newprofilewizardconnectoptionscontent->ConnectAfterCreatingProfileCheckBox->isChecked();

		if ( GlobalConfig->KvpncDebugLevel > 0 )
			if ( connectaftercreating )
				GlobalConfig->appendLogEntry ( i18n ( "Connect options: connecting to profile \"%1\" after creating it." ).arg ( profileData->getName() ) , GlobalConfig->debug );

	}
	else if ( currentpage == newprofilewizardconnectionstatuscheckpage )
	{
		msg = i18n ( "These fields must be filled in:\n" );
		if ( newprofilewizardconnectionstatuscheckcontent->UseConnectionStatusCheckCheckBox->isChecked() )
		{
			profileData->setUseConnectionStatusCheck ( true );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: use connection status check" ), KVpncConfig::debug );
		}
		else
		{
			profileData->setUseConnectionStatusCheck ( false );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: dont use connection status check" ), KVpncConfig::debug );
		}

		if ( newprofilewizardconnectionstatuscheckcontent->DoReconnectAfterConnectionLostCheckBox->isChecked() )
		{
			profileData->setDoReconnectAfterConnectionLost ( true );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: do reconnect after connection lost" ), KVpncConfig::debug );
		}
		else
		{
			profileData->setDoReconnectAfterConnectionLost ( false );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: dont reconnect after connection lost" ), KVpncConfig::debug );
		}

		if ( newprofilewizardconnectionstatuscheckcontent->PingUserdefiniedAddressCheckBox->isChecked() )
		{
			profileData->setDoPingIP ( true );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: ping userdefined IP address" ), KVpncConfig::debug );
		}
		else
		{
			profileData->setDoPingIP ( false );
			if ( GlobalConfig->KvpncDebugLevel > 0 )
				GlobalConfig->appendLogEntry ( i18n ( "Connection status check: dont ping userdefined IP address" ), KVpncConfig::debug );
		}

		profileData->setConnectionStatusInterval ( newprofilewizardconnectionstatuscheckcontent->ConnectionStatusCheckIntervalNumInput->value() );
		profileData->setConnectionStatusCheckSuccessCount ( newprofilewizardconnectionstatuscheckcontent->ConnectionStatusSuccessCountNumInput->value() );

		if ( GlobalConfig->KvpncDebugLevel > 0 )
		{
			GlobalConfig->appendLogEntry ( i18n ( "Connection status check: use connection interval: %1" ).arg ( QString().setNum ( newprofilewizardconnectionstatuscheckcontent->ConnectionStatusCheckIntervalNumInput->value() ) ), KVpncConfig::debug );
			GlobalConfig->appendLogEntry ( i18n ( "Connection status check: success count: %1" ).arg ( QString().setNum ( newprofilewizardconnectionstatuscheckcontent->ConnectionStatusSuccessCountNumInput->value() ) ), KVpncConfig::debug );
		}

		if ( newprofilewizardconnectionstatuscheckcontent->UseConnectionStatusCheckCheckBox->isChecked() )
		{
			if ( newprofilewizardconnectionstatuscheckcontent->PingUserdefiniedAddressCheckBox->isChecked() )
			{
				if ( !newprofilewizardconnectionstatuscheckcontent->UserdefiniedPingIPLineEdit->text().isEmpty() )
				{
					if ( Utils ( GlobalConfig ).isValidIPv4Address ( newprofilewizardconnectionstatuscheckcontent->UserdefiniedPingIPLineEdit->text() ) )
						profileData->setPingHostIP ( newprofilewizardconnectionstatuscheckcontent->UserdefiniedPingIPLineEdit->text() );
					else
					{
						ok = false;
						msg = i18n ( "The value of userdefined IP address is not a valid IP address!" );
					}
				}
				else
				{
					ok = false;
					msg += i18n ( "Userdefinied IP for ping" ) + "\n";
				}
			}
		}
	}
	else if ( currentpage == endpage )
		{}
	if ( ok )
	{
		previouspage = currentpage;
		QWizard::next();
	}
	else
	{
		KMessageBox::error ( this, msg );
	}
}

void NewProfileWizard::back()
{
	/*
	currentpage=previouspage;
	// 	showPage(previouspage);

	if ( currentpage == page1 )
	{
		// nothing here
	}
	else if ( currentpage == newprofilewizardgeneralpage )
	{
		newprofilewizardgeneralpagecontent->NameLineEdit->setText(profileData->getName());
		newprofilewizardgeneralpagecontent->gatewayLineEdit->setText(profileData->getGateway());
		newprofilewizardgeneralpagecontent->DescriptionLineEdit->setText(profileData->getDescription());
	}
	else if ( currentpage == newprofilewizardtypeselectionpage )
	{
		if ( profileData->getConnectionType() == VpnAccountData::cisco )
			newprofilewizardtypeselectionpagecontent->CiscoRadioButton->setChecked(true);
		else if ( profileData->getConnectionType() == VpnAccountData::freeswan  ||
					profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan )
			newprofilewizardtypeselectionpagecontent->FreeswanRadioButton->setChecked(true);
		else if ( profileData->getConnectionType() == VpnAccountData::racoon  || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon)
			newprofilewizardtypeselectionpagecontent->FreeswanRadioButton->setChecked(true);
		else if ( profileData->getConnectionType() == VpnAccountData::pptp )
			newprofilewizardtypeselectionpagecontent->PptpRadioButton->setChecked(true);
		else if ( profileData->getConnectionType() == VpnAccountData::openvpn )
			newprofilewizardtypeselectionpagecontent->OpenvpnRadioButton->setChecked(true);
	}
	else if ( currentpage == newprofilewizardciscoselectionpage )
	{}
	else if ( currentpage == newprofilewizardciscomanuallypage )
	{
		newprofilewizardciscomanuallypagecontent->IDLineEdit->setText(profileData->getGateway());
		newprofilewizardciscomanuallypagecontent->AllowEmptyGroupPasswordCheckBox->setChecked(profileData->getAllowEmptyGroupPassword());
		newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit->setText(profileData->getPreSharedKey());
		profileData->setID(newprofilewizardciscomanuallypagecontent->IDLineEdit->text());

		insertPage ( newprofilewizardciscoselectionpage, "<b>"+ i18n("Cisco selection")+"</b>", 2 );

	}
	else if ( currentpage == newprofilewizardracoonpage )
	{
		newprofilewizardracoonpagecontent->HashAlgoComboBox->setCurrentText(profileData->getHashAlgo());

		insertPage ( newprofilewizardciscoselectionpage,"<b>"+ i18n("Cisco selection")+"</b>" ,  2 );
		insertPage ( newprofilewizardciscomanuallypage, "<b>"+ i18n("Cisco settings")+"</b>",  3 );
		insertPage ( newprofilewizardopenvpnselectionpage, "<b>"+ i18n("FreeS/WAN settings")  , 4 );
		insertPage ( newprofilewizardopenvpnselectionpage, "<b>"+ i18n("OpenVPN settings")+"</b>"  , 5 );
		insertPage ( newprofilewizardpptppage,  "<b>"+ i18n("PPTP settings")+"</b>",  6 );
	}
	else if ( currentpage == newprofilewizardfreeswanpage )
	{
		insertPage ( newprofilewizardciscoselectionpage,"<b>"+ i18n("Cisco selection")+"</b>" ,  2 );
		insertPage ( newprofilewizardciscomanuallypage, "<b>"+ i18n("Cisco settings")+"</b>",  3 );
		insertPage ( newprofilewizardracoonpage, "<b>"+ i18n("Racoon settings")+"</b>"  , 4 );
		insertPage ( newprofilewizardopenvpnselectionpage, "<b>"+ i18n("FreeS/WAN settings")  , 4 );
		insertPage ( newprofilewizardpptppage,  "<b>"+ i18n("PPTP settings")+"</b>",  5 );
	}
	else if ( currentpage == newprofilewizardopenvpnpage )
	{
		newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->setCurrentText(profileData->getTunnelDeviceType() );
		newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->setCurrentText(profileData->getNsCertType());
		newprofilewizardopenvpnpagecontent->TunnelDeviceTypeComboBox->setCurrentText(profileData->getTunnelDeviceType() );
		newprofilewizardopenvpnpagecontent->UseRedirectGatewayCheckBox->setChecked(profileData->getUseRedirectGateway() );

		newprofilewizardopenvpnpagecontent->UserdefiniedCipherComboBox->setCurrentText(profileData->getUserdefiniedCipher());
		newprofilewizardopenvpnpagecontent->UseUserdefiniedCipherCheckBox->setChecked(profileData->getUseUserdefiniedCipher());
		newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox->setChecked(profileData->getUseTlsAuth());
		newprofilewizardopenvpnpagecontent->TlsAuthURLRequester->setURL(profileData->getTlsAuthFile());

		profileData->setUseTlsRemoteHost( newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox->isChecked());
		profileData->setTlsRemoteHost( newprofilewizardopenvpnpagecontent->TlsRemoteHostLineEdit->text());

		profileData->setUseHttpProxy( newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox->isChecked() );
		profileData->setHttpProxy( newprofilewizardopenvpnpagecontent->HttpProxyLineEdit->text( ) );
		profileData->setHttpProxyPort( newprofilewizardopenvpnpagecontent->HttpProxyPortIntNumInput->value( ) );
		profileData->setHttpProxyTimeout( newprofilewizardopenvpnpagecontent->HttpProxyTimeoutIntSpinBox->value() );

		insertPage ( newprofilewizardciscoselectionpage,"<b>"+ i18n("Cisco selection")+"</b>" , 2 );
		insertPage ( newprofilewizardciscomanuallypage, "<b>"+ i18n("Cisco settings")+"</b>",  3 );
		insertPage ( newprofilewizardfreeswanpage, "<b>"+ i18n("Ipsec settings")  ,  4 );
		insertPage ( newprofilewizardracoonpage, "<b>"+ i18n("Racoon settings")+"</b>"  ,  5 );
		insertPage ( newprofilewizardpptppage,  "<b>"+ i18n("PPTP settings")+"</b>",  6 );
	}
	else if ( currentpage == newprofilewizardpptppage )
	{
		insertPage ( newprofilewizardciscoselectionpage,"<b>"+ i18n("Cisco selection")+"</b>" , 2 );
		insertPage ( newprofilewizardciscomanuallypage, "<b>"+ i18n("Cisco settings")+"</b>",  3 );
		insertPage ( newprofilewizardfreeswanpage, "<b>"+ i18n("IPsec settings")  ,  4 );
		insertPage ( newprofilewizardracoonpage, "<b>"+ i18n("Racoon settings")+"</b>"  ,  5 );
		insertPage ( newprofilewizardopenvpnpage,   "<b>"+i18n("OpenVPN settings")+"</b>", 6 );
	}
	else if ( currentpage == newprofilewizarduserpage )
	{
		newprofilewizarduserpagecontent->UsernameLineEdit->setText(profileData->getUserName());
		newprofilewizarduserpagecontent->PasswordEdit->setText(profileData->getUserPassword() );
		newprofilewizarduserpagecontent->CheckUserPass->setChecked(profileData->getSaveUserPassword());
	}
	else if ( currentpage == newprofilewizardnetworkpage )
	{
		newprofilewizardnetworkcontent->RemoteNetAddrLineEdit->setText(profileData->getRemoteNetAddr() );
		newprofilewizardnetworkcontent->RemoteNetMaskComboBox->setCurrentText(profileData->getRemoteNetMask());
		newprofilewizardnetworkcontent->NetworkDeviceComboBox->setCurrentText(profileData->getNetworkDevice());
	}
	else if ( currentpage == newprofilewizardnatpage )
	{
		newprofilewizardnatcontent->UseUdpCheckbox->setChecked(profileData->getUseUdp());
		newprofilewizardnatcontent->UdpPortCheckbox->setChecked(profileData->getUseUdpPort ());
		newprofilewizardnatcontent->UdpPortSpinbox->setValue(profileData->getUdpPort());
	}
	*/
	QWizard::back();
}

QString NewProfileWizard::getName()
{
	return profileData->getName();
}

bool NewProfileWizard::getFinished()
{
	return finished;
}

// void NewProfileDialog::reject()
// {
//
// }

void NewProfileWizard::showPage ( QWidget* page )
{
	currentpage = page;
	QWizard::showPage ( page );


	// FIXME set currentpage at back()
	//backButton()->setEnabled(false);

	helpButton() ->setEnabled ( false );

	if ( page == endpage )
	{
		finishButton() ->setEnabled ( TRUE );
		finishButton() ->setFocus();
	}
}

void NewProfileWizard::dataChanged ( const QString & )
{
	//     if ( !firstName->text().isEmpty() &&
	//          !lastName->text().isEmpty() &&
	//          !email->text().isEmpty() )
	//         nextButton()->setEnabled( TRUE );
	//     else
	//         nextButton()->setEnabled( FALSE );
}

void NewProfileWizard::userdefinedOpenvpnPortToggeled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseUserdefinedPortCheckBox->isChecked() )
		newprofilewizardopenvpnpagecontent->UserdefinedPortSpinBox->setEnabled ( true );
	else
		newprofilewizardopenvpnpagecontent->UserdefinedPortSpinBox->setEnabled ( false );
}

void NewProfileWizard::nsCertTypeOpenvpnToggled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseNsCertTypeCheckBox->isChecked() )
		newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->setEnabled ( true );
	else
		newprofilewizardopenvpnpagecontent->NsCertTypeComboBox->setEnabled ( false );
}

void NewProfileWizard::pskIsInFileToggled ( bool )
{
	if ( newprofilewizardpskcontent->PskInFileCheckBox->isChecked() )
	{
		newprofilewizardpskcontent->LabelPskFile->setEnabled ( TRUE );
		newprofilewizardpskcontent->PSKFileURLRequester->setEnabled ( TRUE );
		newprofilewizardpskcontent->LabelPsk->setEnabled ( FALSE );
		newprofilewizardpskcontent->PSKLineEdit->setEnabled ( FALSE );
	}
	else
	{
		newprofilewizardpskcontent->LabelPskFile->setEnabled ( FALSE );
		newprofilewizardpskcontent->PSKFileURLRequester->setEnabled ( FALSE );
		newprofilewizardpskcontent->LabelPsk->setEnabled ( TRUE );
		newprofilewizardpskcontent->PSKLineEdit->setEnabled ( TRUE );
	}
}

void NewProfileWizard::useUdpToggled ( bool )
{
	if ( newprofilewizardnatcontent->UseUdpCheckbox->isChecked() )
	{
		newprofilewizardnatcontent->UdpPortCheckbox->setEnabled ( TRUE );
		newprofilewizardnatcontent->UdpPortSpinbox->setEnabled ( FALSE );
	}
	else
	{
		newprofilewizardnatcontent->UdpPortCheckbox->setEnabled ( FALSE );
		newprofilewizardnatcontent->UdpPortSpinbox->setEnabled ( FALSE );
	}
}

void NewProfileWizard::udpPortToggled ( bool )
{
	if ( newprofilewizardnatcontent->UdpPortCheckbox->isChecked() )
	{
		newprofilewizardnatcontent->UdpPortSpinbox->setEnabled ( TRUE );
	}
	else
	{
		newprofilewizardnatcontent->UdpPortSpinbox->setEnabled ( FALSE );
	}
}

void NewProfileWizard::pingIpAfterConnectToggled ( bool )
{
	if ( newprofilewizardconnectionstatuscheckcontent->PingUserdefiniedAddressCheckBox->isChecked() )
		newprofilewizardconnectionstatuscheckcontent->UserdefiniedPingIPLineEdit->setEnabled ( true );
	else
		newprofilewizardconnectionstatuscheckcontent->UserdefiniedPingIPLineEdit->setEnabled ( false );
}

void NewProfileWizard::useUserdefiniedCipherToggled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseUserdefiniedCipherCheckBox->isChecked() )
		newprofilewizardopenvpnpagecontent->UserdefiniedCipherComboBox->setEnabled ( true );
	else
		newprofilewizardopenvpnpagecontent->UserdefiniedCipherComboBox->setEnabled ( false );
}

void NewProfileWizard::useSpecialRemoteIDToggled ( bool )
{
	if ( newprofilewizardcertcontent->UseSpecialRemoteIDcheckBox->isChecked() )
		newprofilewizardcertcontent->RemoteIDLineEdit->setEnabled ( true );
	else
		newprofilewizardcertcontent->RemoteIDLineEdit->setEnabled ( false );
}

void NewProfileWizard::useSpecialServerCertificateToggled ( bool )
{
	if ( newprofilewizardcertcontent->UseSpecialServerCertificateCheckBox->isChecked() )
	{
		newprofilewizardcertcontent->SpecialServerCertificateURLRequester->setEnabled ( TRUE );
	}
	else
	{
		newprofilewizardcertcontent->SpecialServerCertificateURLRequester->setEnabled ( FALSE );
	}
}

void NewProfileWizard::useTlsAuthToggled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseTlsAuthCheckBox ->isChecked() )
	{
		newprofilewizardopenvpnpagecontent->TlsAuthURLRequester->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox->setEnabled ( true );
	}
	else
	{
		newprofilewizardopenvpnpagecontent->TlsAuthURLRequester->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox->setEnabled ( false );
	}
}

void NewProfileWizard::useHttpProxyToggeled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseHttpProxyCheckBox->isChecked() )
	{
		newprofilewizardopenvpnpagecontent->HostTextLabel->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->HttpProxyLineEdit->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->TimeoutTextLabel->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->HttpProxyTimeoutIntSpinBox->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->PortTextextLabel->setEnabled ( true );
		newprofilewizardopenvpnpagecontent->HttpProxyPortIntNumInput->setEnabled ( true );
	}
	else
	{
		newprofilewizardopenvpnpagecontent->HostTextLabel->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->HttpProxyLineEdit->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->TimeoutTextLabel->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->HttpProxyTimeoutIntSpinBox->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->PortTextextLabel->setEnabled ( false );
		newprofilewizardopenvpnpagecontent->HttpProxyPortIntNumInput->setEnabled ( false );
	}
}

void NewProfileWizard::useTlsRemoteHostToggled ( bool )
{
	if ( newprofilewizardopenvpnpagecontent->UseTlsRemoteHostCheckBox->isChecked() )
		newprofilewizardopenvpnpagecontent->TlsRemoteHostLineEdit->setEnabled ( true );
	else
		newprofilewizardopenvpnpagecontent->TlsRemoteHostLineEdit->setEnabled ( false );
}

void NewProfileWizard::connectionStatusCheckToggled ( bool )
{
	if ( !newprofilewizardconnectionstatuscheckcontent->UseConnectionStatusCheckCheckBox->isChecked() )
	{
		newprofilewizardconnectionstatuscheckcontent->ConnectionStatusCheckIntervalNumInput->setEnabled ( false );
		newprofilewizardconnectionstatuscheckcontent->ConnectionStatusSuccessCountNumInput->setEnabled ( false );
	}
	else
	{
		newprofilewizardconnectionstatuscheckcontent->ConnectionStatusCheckIntervalNumInput->setEnabled ( true );
		newprofilewizardconnectionstatuscheckcontent->ConnectionStatusSuccessCountNumInput->setEnabled ( true );
	}
}

bool NewProfileWizard::importProfile ( VpnAccountData::ConnectionType ConnType )
{
	// FIXME make dlg dynamiclly

	bool success = true;

	if ( ConnType == VpnAccountData::cisco || ConnType == VpnAccountData::ciscoorig )
	{
		ImportProfileDialog dlg ( GlobalConfig, this, i18n ( "Import Cisco PCF profile" ), "" );
		dlg.exec();
		importOK = dlg.importOk;
		if ( importOK )
		{
			profileData = dlg.acc;
			KMessageBox::information ( 0, i18n ( "Import of \"%1\" was successful." ).arg ( profileData->getName() ) );
			GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) was successful." ).arg ( profileData->getName() ).arg ( "PCF" ), GlobalConfig->info );
		}
		else
		{
			KMessageBox::sorry ( 0, i18n ( "Import of \"%1\" has been failed." ).arg ( profileData->getName() ) );
			GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) has been failed." ).arg ( profileData->getName() ).arg ( "PCF" ), GlobalConfig->error );
			success = false;
		}
	}
	if ( ConnType == VpnAccountData::openvpn )
	{
		ImportOpenvpnProfileDialog dlg ( GlobalConfig, this, i18n ( "Import OpenVPN profile" ), "" );
		dlg.exec();
		importOK = dlg.importOk;
		if ( importOK )
		{
			profileData = dlg.acc;
			KMessageBox::information ( 0, i18n ( "Import of \"%1\" was successful." ).arg ( profileData->getName() ) );
			GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) was successful." ).arg ( profileData->getName() ).arg ( "OpenVPN" ), GlobalConfig->info );
		}
		else
		{
			KMessageBox::sorry ( 0, i18n ( "Import of \"%1\" has been failed." ).arg ( profileData->getName() ) );
			GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) has been failed." ).arg ( profileData->getName() ).arg ( "OpenVPN" ), GlobalConfig->error );
			success = false;
		}
	}
	if ( ConnType == VpnAccountData::freeswan )
	{
		ImportIpsecProfileDialog dlg ( GlobalConfig, this, i18n ( "Import IPSec profile" ), "" );
		dlg.setCaption(i18n("Import IPSec config"));
		dlg.exec();
		importOK = dlg.importOk;
		if ( importOK )
		{
			profileData = dlg.acc;
			KMessageBox::information ( 0, i18n ( "Import of \"%1\" was successful." ).arg ( profileData->getName() ) );
				GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) was successful." ).arg ( dlg.main->FilenameUrlrequester->url() ).arg ( "IPSec" ), GlobalConfig->info );
		}
		else
		{
			KMessageBox::sorry ( 0, i18n ( "Import of \"%1\" has been failed." ).arg ( profileData->getName() ) );
			GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) has been failed." ).arg ( dlg.main->FilenameUrlrequester->url() ).arg ( "IPsec" ), GlobalConfig->error );
			success = false;
		}
	}

	return success;

}

bool NewProfileWizard::importCertificate()
{
	bool success = true;

	newprofilewizardcertcontent->CaCertpathURLRequester->clear();
	newprofilewizardcertcontent->certpathURLRequester->clear();
	newprofilewizardcertcontent->PrivkeyPasswordEdit->clear();
	ImportCertificateDialog dlg ( this, i18n ( "Import Certificate..." ).ascii(), GlobalConfig );

	if ( profileData->getConnectionType() == VpnAccountData::freeswan ||
	        profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan )
	{
		dlg.main->ImporttypeComboBox->setCurrentItem ( ImportCertificateDialog::pkcs12_freeswan );
		dlg.typeToggeled ( ImportCertificateDialog::pkcs12_freeswan );
	}
	else if ( profileData->getConnectionType() == VpnAccountData::racoon || profileData->getConnectionType() == VpnAccountData::l2tpd_racoon )
	{
		dlg.main->ImporttypeComboBox->setCurrentItem ( ImportCertificateDialog::pkcs12_racoon );
		dlg.main->PrivateKeyPassGroupBox->setEnabled ( false );
		dlg.typeToggeled ( ImportCertificateDialog::pkcs12_racoon );
	}
	else if ( profileData->getConnectionType() == VpnAccountData::openvpn )
	{
		dlg.main->ImporttypeComboBox->setCurrentItem ( ImportCertificateDialog::pkcs12_openvpn );
		dlg.typeToggeled ( ImportCertificateDialog::pkcs12_openvpn );
		dlg.main->RacoonCertificatePathUrlrequester->setEnabled ( true );
		dlg.main->RacoonCertificatePathUrlrequester->setURL ( profileData->getCertPath() );
		dlg.main->PrivateKeyPassGroupBox->setEnabled ( true );
		dlg.main->PrivateKeyPasswordEdit->setEnabled ( true );
		dlg.main->PrivateKeyAgainPasswordEdit->setEnabled ( true );
	}
	else if ( profileData->getConnectionType() == VpnAccountData::ciscoorig )
	{
		dlg.main->ImporttypeComboBox->setCurrentItem ( ImportCertificateDialog::cisco );
		dlg.typeToggeled ( ImportCertificateDialog::cisco);
		dlg.main->RacoonCertificatePathUrlrequester->setEnabled ( false );
// 		dlg.main->RacoonCertificatePathUrlrequester->hide();
		dlg.main->PrivateKeyPassGroupBox->setEnabled ( true );
		dlg.main->PrivateKeyPasswordEdit->setEnabled ( true );
		dlg.main->PrivateKeyAgainPasswordEdit->setEnabled ( true );
	}


	dlg.exec();
	importOK = dlg.importOk;
	QString filename = dlg.filename;
	if ( importOK )
	{
		QString certpath = dlg.certpath;
		QString CertFullPath = dlg.CertFullPath;
		QString CaCertFullPath = dlg.CaCertFullPath;
		QString importpassword = dlg.main->ImportPasswordEdit->text();
		QString privatekeypassword = dlg.main->PrivateKeyPasswordEdit->password();
		QString certificate = QString ( "mykeys_" + dlg.certName + ".pem" );
		QString privatekey = QString ( dlg.certName + ".pem" );

		QString certpostfix = "";
		QString privatepostfix = "";
		if ( profileData->getConnectionType() == VpnAccountData::freeswan ||
		        profileData->getConnectionType() == VpnAccountData::l2tpd_freeswan )
		{
			certpostfix = "certs/";
			privatepostfix = "private/";
		}

		newprofilewizardcertcontent->CaCertpathURLRequester->setURL ( CaCertFullPath );


		if ( profileData->getConnectionType() == VpnAccountData::openvpn )
			newprofilewizardcertcontent->PrivkeyPasswordEdit->setText ( importpassword );
		else
			newprofilewizardcertcontent->PrivkeyPasswordEdit->setText ( privatekeypassword );

		if ( profileData->getConnectionType() == VpnAccountData::l2tpd_racoon ||
		        profileData->getConnectionType() == VpnAccountData::racoon )
			newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled ( false );


		newprofilewizardcertcontent->certpathURLRequester->setURL ( certpath );

		if ( profileData->getConnectionType() == VpnAccountData::l2tpd_racoon ||
		        profileData->getConnectionType() == VpnAccountData::racoon )
		{
			newprofilewizardcertcontent->privkeypathURLRequester->setURL ( certpath + "/" + certpostfix + certificate );
			newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled ( false );
		}
		else
			newprofilewizardcertcontent->privkeypathURLRequester->setURL ( certpath + "/" + privatepostfix + privatekey );
		newprofilewizardcertcontent->x509certURLRequester->setURL ( certpath + "/" + certpostfix + certificate );

		KMessageBox::information ( 0, i18n ( "Import of \"%1\" was successful." ).arg ( filename ) );
		GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) was successful." ).arg ( filename ).arg ( "P12 certificate" ), GlobalConfig->info );
	}
	else
	{
		GlobalConfig->appendLogEntry ( i18n ( "Import of \"%1\" (%2) has been failed." ).arg ( filename ).arg ( "P12 certificate" ), GlobalConfig->info );
		success = false;
	}
	return success;
}

void NewProfileWizard::authenticateWithUsernameAndPasswordToggled ( bool )
{
	if ( newprofilewizardopenvpnauthpagecontent->AuthWithUsernameAndPasswordCheckBox->isChecked() )
		newprofilewizardopenvpnauthpagecontent->UseOnlyCaCertAndUserAuthCheckBox->setEnabled ( true );
	else
		newprofilewizardopenvpnauthpagecontent->UseOnlyCaCertAndUserAuthCheckBox->setEnabled ( false );
}

void NewProfileWizard::pskInputToggled ( const QString& )
{
	if ( !newprofilewizardpskcontent->PSKLineEdit->text().isEmpty() )
		newprofilewizardpskcontent->CheckSavePsk->setChecked ( true );
	else
		newprofilewizardpskcontent->CheckSavePsk->setChecked ( false );
}

void NewProfileWizard::userpassToggled ( const QString& )
{
	if ( !newprofilewizarduserpagecontent->PasswordEdit->text().isEmpty() )
		newprofilewizarduserpagecontent->CheckUserPass->setChecked ( true );
	else
		newprofilewizarduserpagecontent->CheckUserPass->setChecked ( false );
}

void NewProfileWizard::usernameToggled ( const QString& )
{
	// 	if (newprofilewizarduserpagecontent->UsernameLineEdit->text().isEmpty())
	// 		newprofilewizarduserpagecontent->DontSaveUsernameCheckBox->setChecked(true);
	// 	else
	// 		newprofilewizarduserpagecontent->DontSaveUsernameCheckBox->setChecked(false);
}

void NewProfileWizard::pskToggled ( const QString& )
{
	if ( !newprofilewizardciscomanuallypagecontent->GroupPasswordLineEdit->text().isEmpty() )
		newprofilewizardciscomanuallypagecontent->CheckSavePsk->setChecked ( true );
	else
		newprofilewizardciscomanuallypagecontent->CheckSavePsk->setChecked ( false );
}

void NewProfileWizard::useRightNextHopToggled ( bool )
{
	if ( newprofilewizardfreeswanpagecontent->UseRightNextHopCheckBox->isChecked() )
		newprofilewizardfreeswanpagecontent->RightNextHopLineEdit->setEnabled ( true );
	else
		newprofilewizardfreeswanpagecontent->RightNextHopLineEdit->setEnabled ( false );
}

void NewProfileWizard::useLeftNextHopToggled ( bool )
{
	if ( newprofilewizardfreeswanpagecontent->UseLeftNextHopCheckBox->isChecked() )
		newprofilewizardfreeswanpagecontent->LeftNextHopLineEdit->setEnabled ( true );
	else
		newprofilewizardfreeswanpagecontent->LeftNextHopLineEdit->setEnabled ( false );
}

void NewProfileWizard::additionalNetworkRoutesToggled ( bool )
{
	if ( newprofilewizardnetworkroutecontent->UseExtraNetworkRoutesCheckbox->isChecked() )
	{
		newprofilewizardnetworkroutecontent->NetworkListView->setEnabled ( TRUE );
		newprofilewizardnetworkroutecontent->DeleteNetworkRoutePushButton->setEnabled ( TRUE );
		newprofilewizardnetworkroutecontent->AddRoutePushButton->setEnabled ( TRUE );
	}
	else
	{
		newprofilewizardnetworkroutecontent->NetworkListView->setEnabled ( FALSE );
		newprofilewizardnetworkroutecontent->DeleteNetworkRoutePushButton->setEnabled ( FALSE );
		newprofilewizardnetworkroutecontent->AddRoutePushButton->setEnabled ( FALSE );
	}
}

void NewProfileWizard::delNetworkRouteClicked()
{
	if ( newprofilewizardnetworkroutecontent->NetworkListView->childCount() > 0 && newprofilewizardnetworkroutecontent->NetworkListView->currentItem() != 0 )
	{
		QListViewItem * item = newprofilewizardnetworkroutecontent->NetworkListView->currentItem();
		QString Network = item->text ( 0 );
		QString Netmask = item->text ( 1 );
		int result = KMessageBox::questionYesNo ( this, i18n ( "Do you really want to delete the network \"%1/%2\"?" ).arg ( Network ).arg ( Netmask ), i18n ( "Delete?" ) );
		//LogOutput->append( "Result: "+ QString().setNum(result) ) ;
		if ( result == 3 )  // Yes
		{
			newprofilewizardnetworkroutecontent->NetworkListView->removeItem ( item );
		}
	}
}

void NewProfileWizard::addNetworkRouteClicked()
{
	AddNetworkRouteDialog dlg ( this, i18n ( "Add Network Route..." ) );


	dlg.main->InterfaceComboBox->insertItem ( "default" ); // interface where default route points

	//FIXME
	dlg.main->InterfaceComboBox->insertItem ( "eth0" );
	dlg.main->InterfaceComboBox->insertItem ( "eth1" );
	dlg.main->InterfaceComboBox->insertItem ( "eth2" );
	dlg.main->InterfaceComboBox->insertItem ( "ipsec0" );
	dlg.main->InterfaceComboBox->insertItem ( "tun0" );
	dlg.main->InterfaceComboBox->insertItem ( "ppp0" );

	if ( dlg.exec() )
	{
		QString gateway = dlg.getGateway();
		QString interface = dlg.getInterface();
		if ( !dlg.getUseGateway() )
			gateway = "-";
		if ( !dlg.getUseInterface() )
			interface = "-";
		newprofilewizardnetworkroutecontent->NetworkListView->insertItem ( new QListViewItem ( newprofilewizardnetworkroutecontent->NetworkListView, dlg.getNetwork(), dlg.getNetmask(), gateway, interface ) );
	}
}

void NewProfileWizard::domainNameToggled ( bool )
{
	if ( newprofilewizarduserpagecontent->NtDomainNameCheckbox->isChecked() )
		newprofilewizarduserpagecontent->NtDomainNameLineedit->setEnabled ( true );
	else
		newprofilewizarduserpagecontent->NtDomainNameLineedit->setEnabled ( false );
}

void NewProfileWizard::useSmartcardToggled ( bool )
{
	if ( newprofilewizardcertcontent->UseSmartcardCheckBox->isChecked() )
	{
		newprofilewizardcertcontent->SmartcardGroupBox->setEnabled ( true );
		newprofilewizardcertcontent->x509certURLRequester->setEnabled ( false );
		newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled ( false );
		newprofilewizardcertcontent->privkeypathURLRequester->setEnabled ( false );
		newprofilewizardcertcontent->LabelCertificate->setEnabled ( false );
		newprofilewizardcertcontent->LabelPrivateKeyPath->setEnabled ( false );
		newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled ( false );
		newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setEnabled ( false );

// 		newprofilewizardcertcontent->CertificateGroupBox->setEnabled(false);


// 		if ( profileData->getConnectionType() == VpnAccountData::freeswan || GlobalConfig->currentProfile->getConnectionType() == VpnAccountData::l2tpd_freeswan )
// 		{
// 			ToolInfo IpsecToolInfo( GlobalConfig->programsInPath , "ipsec" );
// 			if ( GlobalConfig->programsInPath )
// 			{
// 				IpsecToolInfo.addSearchPath( "/sbin" );
// 				IpsecToolInfo.addSearchPath( "/usr/local/sbin" );
// 				IpsecToolInfo.addSearchPath( "/usr/sbin" );
// 				IpsecToolInfo.addSearchPath( "/bin" );
// 				IpsecToolInfo.addSearchPath( "/usr/local/bin" );
// 				IpsecToolInfo.addSearchPath( "/usr/bin" );
// 			}
// 			IpsecToolInfo.collectToolInfo();
// 			if (IpsecToolInfo.Version.contains("Openswan") || IpsecToolInfo.Version.contains("Free"))
// 				KMessageBox::information(0,i18n("%1 (IPSec) currently has no working smartcard support (pkcs11). Please use strongSwan instead with enabled smartcard support.").arg(IpsecToolInfo.Version.section(' ',0,0)),i18n("Unsupported IPSec version"));
// 		}

	}
	else
	{
		newprofilewizardcertcontent->SmartcardGroupBox->setEnabled ( false );
		newprofilewizardcertcontent->x509certURLRequester->setEnabled ( true );
		newprofilewizardcertcontent->PrivkeyPasswordEdit->setEnabled ( true );
		newprofilewizardcertcontent->privkeypathURLRequester->setEnabled ( true );
		newprofilewizardcertcontent->LabelCertificate->setEnabled ( true );
		newprofilewizardcertcontent->LabelPrivateKeyPath->setEnabled ( true );
		newprofilewizardcertcontent->LabelPrivateKeyPassword->setEnabled ( true );

// 		newprofilewizardcertcontent->CertificateGroupBox->setEnabled(true);
	}
}

void NewProfileWizard::useSmartcardOnCertFormateToggled ( bool )
{
	if ( newprofilewizardp12certselectioncontent->UseSmartcardCheckBox->isChecked() )
	{
		newprofilewizardp12certselectioncontent->P12Group->setEnabled ( false );
// 		if ( profileData->getConnectionType() == VpnAccountData::freeswan || GlobalConfig->currentProfile->getConnectionType() == VpnAccountData::l2tpd_freeswan )
// 		{
// 			ToolInfo IpsecToolInfo( GlobalConfig->programsInPath , "ipsec" );
// 			if ( GlobalConfig->programsInPath )
// 			{
// 				IpsecToolInfo.addSearchPath( "/sbin" );
// 				IpsecToolInfo.addSearchPath( "/usr/local/sbin" );
// 				IpsecToolInfo.addSearchPath( "/usr/sbin" );
// 				IpsecToolInfo.addSearchPath( "/bin" );
// 				IpsecToolInfo.addSearchPath( "/usr/local/bin" );
// 				IpsecToolInfo.addSearchPath( "/usr/bin" );
// 			}
// 			IpsecToolInfo.collectToolInfo();
// 			if (IpsecToolInfo.Version.contains("Openswan") || IpsecToolInfo.Version.contains("Free"))
// 				KMessageBox::information(0,i18n("%1 (IPSec) currently has no working smartcard support (pkcs11). Please use strongSwan instead with enabled smartcard support.").arg(IpsecToolInfo.Version.section(' ',0,0)),i18n("Unsupported IPSec version"));
// 		}
	}
	else
	{
		newprofilewizardp12certselectioncontent->P12Group->setEnabled ( true );
	}
}

void NewProfileWizard::usePkcs11ProvidersToggled ( bool )
{
	if ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox->isChecked() )
		newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->setEnabled ( true );
	else
		newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->setEnabled ( false );
}

void NewProfileWizard::idTypeToggled()
{
	// 	if (newprofilewizardcertcontent->Pkcs11IdTypeComboBox->currentItem() == 0)
	// 		newprofilewizardcertcontent->IdLabel->setText(i18n("ID"));
	// 	else if (newprofilewizardcertcontent->Pkcs11IdTypeComboBox->currentItem() == 1)
	// 		newprofilewizardcertcontent->IdLabel->setText(i18n("Label"));
	// 	else
	// 		newprofilewizardcertcontent->IdLabel->setText(i18n("Description"));
}

void NewProfileWizard::detectPkcs11Ids()
{
	GlobalConfig->appPointer->setOverrideCursor ( QCursor ( Qt::WaitCursor ) );
	newprofilewizardcertcontent->Pkcs11IdComboBox->clear();

	int Pkcs11IdType = newprofilewizardcertcontent->Pkcs11IdTypeComboBox->currentItem();
	QString Pkcs11IdTypeTmp;
	if ( Pkcs11IdType == 0 )
	{
		Pkcs11IdTypeTmp = "id";

		if ( GlobalConfig->KvpncDebugLevel > 1 )
			GlobalConfig->appendLogEntry ( i18n ( "Pkcs11IdType: %1" ).arg ( Pkcs11IdTypeTmp ), KVpncConfig::debug );
	}
	else if ( Pkcs11IdType == 1 )
	{
		Pkcs11IdTypeTmp = "label";
		if ( GlobalConfig->KvpncDebugLevel > 1 )
			GlobalConfig->appendLogEntry ( i18n ( "Pkcs11IdType: %1" ).arg ( Pkcs11IdTypeTmp ), KVpncConfig::debug );
	}
	else
	{
		Pkcs11IdTypeTmp = "subject";
		if ( GlobalConfig->KvpncDebugLevel > 1 )
			GlobalConfig->appendLogEntry ( i18n ( "Pkcs11IdType: %1" ).arg ( Pkcs11IdTypeTmp ), KVpncConfig::debug );
	}

	QString ProviderLib = "";
	if ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox->isChecked() && !newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url().isEmpty() )
		ProviderLib = newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url();

	// we have to split slot id and name ("0 : foobar") => 0
	QString Pkcs11Slot = newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText().section ( ':', 0, 0 ).stripWhiteSpace();

	QStringList Pkcs11Ids = Utils ( GlobalConfig ).getSmartcardCertsFromSlot ( Pkcs11Slot, Pkcs11IdTypeTmp, ProviderLib );
	for ( QStringList::Iterator it = Pkcs11Ids.begin(); it != Pkcs11Ids.end(); ++it )
		newprofilewizardcertcontent->Pkcs11IdComboBox->insertItem ( QString ( *it ) );

	if ( newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText() == "" || newprofilewizardcertcontent->Pkcs11IdComboBox->currentText() == "" )
		nextButton()->setEnabled ( false );
	else
		nextButton()->setEnabled ( true );

	GlobalConfig->appPointer->restoreOverrideCursor();
}

void NewProfileWizard::detectPkcs11Slots()
{
	GlobalConfig->appPointer->setOverrideCursor ( QCursor ( Qt::WaitCursor ) );
	newprofilewizardcertcontent->Pkcs11SlotComboBox->clear();
	QString ProviderLib = "";
	if ( newprofilewizardcertcontent->UsePkcs11ProvidersCheckBox->isChecked() && !newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url().isEmpty() )
		ProviderLib = newprofilewizardcertcontent->Pkcs11ProvidersURLRequester->url();
	QStringList Pkcs11Slots = Utils ( GlobalConfig ).getSmartcardSlots ( ProviderLib );
	for ( QStringList::Iterator it = Pkcs11Slots.begin(); it != Pkcs11Slots.end(); ++it )
		newprofilewizardcertcontent->Pkcs11SlotComboBox->insertItem ( QString ( *it ) );

	if ( !Pkcs11Slots.isEmpty() )
		newprofilewizardcertcontent->Pkcs11IdTypeComboBox->setEnabled ( true );
	if ( newprofilewizardcertcontent->Pkcs11SlotComboBox->currentText() == "" || newprofilewizardcertcontent->Pkcs11IdComboBox->currentText() == "" )
		nextButton()->setEnabled ( false );
	else
		nextButton()->setEnabled ( true );

	GlobalConfig->appPointer->restoreOverrideCursor();
}

void NewProfileWizard::mtuToggled ( bool )
{
	if ( newprofilewizardnetworkcontent->MtuCheckbox->isChecked() )
		newprofilewizardnetworkcontent->MtuSpinbox->setEnabled ( true );
	else
		newprofilewizardnetworkcontent->MtuSpinbox->setEnabled ( false );
}

void NewProfileWizard::mruToggled ( bool )
{
	if ( newprofilewizardnetworkcontent->MruCheckbox->isChecked() )
		newprofilewizardnetworkcontent->MruSpinbox->setEnabled ( true );
	else
		newprofilewizardnetworkcontent->MruSpinbox->setEnabled ( false );
}

void NewProfileWizard::useVirtualIpAddressToggled ( bool )
{
	if ( profilenetworkvirtualipoptionscontent->UseVirtualIPCheckBox->isChecked() )
	{
		profilenetworkvirtualipoptionscontent->LocalVirtualIpEdit->setEnabled ( TRUE );
		profilenetworkvirtualipoptionscontent->RemoteVirtualIpLineEdit->setEnabled ( TRUE );
	}
	else
	{
		profilenetworkvirtualipoptionscontent->LocalVirtualIpEdit->setEnabled ( FALSE );
		profilenetworkvirtualipoptionscontent->RemoteVirtualIpLineEdit->setEnabled ( FALSE );
	}
}

void NewProfileWizard::localIDTypeToggled ( const QString& text )
{
	if ( text == "asn1dn" )
	{
		newprofilewizardracoonpagecontent->LocalIDLineEdit->setDisabled ( true );
		newprofilewizardracoonpagecontent->LocalIDLabel->setDisabled ( true );
	}
	else
	{
		newprofilewizardracoonpagecontent->LocalIDLineEdit->setDisabled ( false );
		newprofilewizardracoonpagecontent->LocalIDLabel->setDisabled ( false );
	}
}

void NewProfileWizard::localIDTypeIpsecToggled ( const QString& text )
{
	if ( text == "asn1dn" )
	{
		newprofilewizardfreeswanpagecontent->LocalIDLineEdit->setDisabled ( true );
		newprofilewizardfreeswanpagecontent->LocalIDLabel->setDisabled ( true );
	}
	else
	{
		newprofilewizardfreeswanpagecontent->LocalIDLineEdit->setDisabled ( false );
		newprofilewizardfreeswanpagecontent->LocalIDLabel->setDisabled ( false );
	}
}

void NewProfileWizard::usePortToggled ( bool )
{
	if ( newprofilewizardvtunpagecontent->PortCheckbox->isChecked() )
		newprofilewizardvtunpagecontent->PortSpinbox->setEnabled ( true );
	else
		newprofilewizardvtunpagecontent->PortSpinbox->setEnabled ( false );
}

void NewProfileWizard::useAuthenticationAlgorithmToggled ( bool )
{
	if ( newprofilewizardopenvpnauthpagecontent->UseAuthenticationAlgorithmCheckBox->isChecked() )
		newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox ->setEnabled ( true );
	else
		newprofilewizardopenvpnauthpagecontent->UserdefiniedDigestComboBox->setEnabled ( false );
}

void NewProfileWizard::useRemoteNetworkToggled(bool)
{
	if ( newprofilewizardnetworkcontent->UseRemoteNetworkCheckBox->isChecked() )
		newprofilewizardnetworkcontent->RemoteNetworkGroupBox ->setEnabled ( true );
	else
		newprofilewizardnetworkcontent->RemoteNetworkGroupBox->setEnabled ( false );
}

void NewProfileWizard::useIkeToggled(bool)
{
	if (newprofilewizardfreeswanpagecontent->UseCustomIkeCheckBox->isChecked())
		newprofilewizardfreeswanpagecontent->IkeGroupBox->setEnabled(true);
	else
		newprofilewizardfreeswanpagecontent->IkeGroupBox->setEnabled(false);
}

void NewProfileWizard::useEspToogled(bool)
{
	if (newprofilewizardfreeswanpagecontent->UseCustomEspCheckBox->isChecked())
		newprofilewizardfreeswanpagecontent->EspGroupBox->setEnabled(true);
	else
		newprofilewizardfreeswanpagecontent->EspGroupBox->setEnabled(false);
}

void NewProfileWizard::remoteIDTypeToggled(const QString& text)
{
	if (text == "asn1dn")
	{
		newprofilewizardracoonpagecontent->RemoteIDLineEdit->setDisabled(true);
		newprofilewizardracoonpagecontent->RemoteIDLabel->setDisabled(true);
	}
	else
	{
		newprofilewizardracoonpagecontent->RemoteIDLineEdit->setDisabled(false);
		newprofilewizardracoonpagecontent->RemoteIDLabel->setDisabled(false);
	}
}

void NewProfileWizard::defaultRouteToggled(const QString&)
{

	if (newprofilewizardnetworkroutecontent->DefaultRouteComboBox->currentText() == i18n("Keep default route") || newprofilewizardnetworkroutecontent->DefaultRouteComboBox->currentItem() == 0)
	{
		KMessageBox::information(0,i18n("Additional network route is needed:\n\nYou have selected to keep the default route. You have to add additional network routes to your remote network. Otherwise you probably dont have access to it."),i18n("Route needed"));
	}

}

void NewProfileWizard::ikeGroupToggled(bool)
{
	if (newprofilewizardracoonpagecontent->IkeGroupCheckbox->isChecked())
		newprofilewizardracoonpagecontent->DHGroupComboBox->setEnabled(true);
	else
		newprofilewizardracoonpagecontent->DHGroupComboBox->setEnabled(false);
}

void NewProfileWizard::useXauthFreeswanToggled(bool)
{
	if (newprofilewizardfreeswanpagecontent->UseXauthCheckBox->isChecked())
	{
		newprofilewizarduserpagecontent->setEnabled(true);
		newprofilewizardpskcontent->setEnabled(true);
		newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->setEnabled(false);
		newprofilewizardfreeswanpagecontent->LocalIDLineEdit->setEnabled(true);
		newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->setCurrentText("keyid");
	}
	else
	{
		newprofilewizarduserpagecontent->setEnabled(false);
		newprofilewizardpskcontent->setEnabled(false);
		newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->setEnabled(true);
		newprofilewizardfreeswanpagecontent->LocalIDLineEdit->setEnabled(false);
		newprofilewizardfreeswanpagecontent->LocalIdTypeCombobox->setCurrentText("asn1dn");
	}
}

void NewProfileWizard::useXauthRacoonToggled(bool)
{
	if (newprofilewizardracoonpagecontent->UseXauthCheckBox->isChecked())
	{
		newprofilewizarduserpagecontent->setEnabled(true);
		newprofilewizardpskcontent->setEnabled(true);
		newprofilewizardracoonpagecontent->LocalIdTypeCombobox->setEnabled(false);
		newprofilewizardracoonpagecontent->LocalIDLineEdit->setEnabled(true);
		newprofilewizardracoonpagecontent->LocalIdTypeCombobox->setCurrentText("keyid");
	}
	else
	{
		newprofilewizarduserpagecontent->setEnabled(false);
		newprofilewizardpskcontent->setEnabled(false);
		newprofilewizardracoonpagecontent->LocalIdTypeCombobox->setEnabled(true);
		newprofilewizardracoonpagecontent->LocalIDLineEdit->setEnabled(false);
		newprofilewizardracoonpagecontent->LocalIdTypeCombobox->setCurrentText("asn1dn");
	}
}

void NewProfileWizard::tunnelDeviceTypeChanged(const QString & string )
{
	if ( profileData->getConnectionType() == VpnAccountData::openvpn || GlobalConfig->currentProfile->getConnectionType() == VpnAccountData::ssh)
	{
		if (string.lower() == "tun")
		{
			profilenetworkvirtualipoptionscontent->LabelRemoteVirtualIp->setText(i18n("Remote IP (virtual):"));
		}
		if (string.lower() == "tap")
		{
			profilenetworkvirtualipoptionscontent->LabelRemoteVirtualIp->setText(i18n("Netmask for local IP address:"));
		}
	}
}

void NewProfileWizard::useDnsServerToggled(bool)
{
	if ( newprofilewizardpptppagecontent->DnsServerCheckbox->isChecked() )
		newprofilewizardpptppagecontent->DnsServerLineedit->setEnabled( true );
	else
		newprofilewizardpptppagecontent->DnsServerLineedit->setEnabled( false );
}

void NewProfileWizard::useSearchDomainInResolvConfToggled(bool)
{
	if ( newprofilewizardpptppagecontent->UseSearchDomainInResolvConfCheckbox ->isChecked() )
		newprofilewizardpptppagecontent->SearchDomainInResolvConfLineedit->setEnabled( true );
	else
		newprofilewizardpptppagecontent->SearchDomainInResolvConfLineedit->setEnabled( false );
}

