Diffstat (limited to 'noncore/settings/networksettings/interfaces/interfacesetupimp.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | 55 |
1 files changed, 51 insertions, 4 deletions
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp index fc65c5f..8d78828 100644 --- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp +++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp @@ -10,4 +10,12 @@ #include <qmessagebox.h> +#include <opie/oprocess.h> + +#ifdef QWS +#include <opie/owait.h> +#include <qpe/global.h> +#include <qapplication.h> +#endif + #define DNSSCRIPT "changedns" @@ -35,7 +43,39 @@ InterfaceSetupImp::~InterfaceSetupImp(){ */ bool InterfaceSetupImp::saveChanges(){ + bool error; + QString iface = interfaces->getInterfaceName(error); if(!saveSettings()) return false; + + qWarning("restarting interface %s\n", iface.latin1()); interfaces->write(); + + QString ifup; + ifup += "ifdown "; + ifup += iface; + ifup += "; ifup "; + ifup += iface; + ifup += ";"; + + OProcess restart; + restart << "sh"; + restart << "-c"; + restart << ifup; + + OWait *owait = new OWait(); + Global::statusMessage( tr( "Restarting interface" ) ); + + owait->show(); + qApp->processEvents(); + + if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { + qWarning("unstable to spawn ifdown/ifup"); + } + + owait->hide(); + delete owait; + + interface->refresh(); + return true; } @@ -61,10 +101,13 @@ bool InterfaceSetupImp::saveSettings(){ return false; } - //interfaces.removeAllInterfaceOptions(); - // DHCP - if(dhcpCheckBox->isChecked()) + if(dhcpCheckBox->isChecked()) { interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); - else{ + interfaces->removeInterfaceOption("address"); + interfaces->removeInterfaceOption("netmask"); + interfaces->removeInterfaceOption("gateway"); + interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); + interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); + } else{ interfaces->setInterfaceMethod("static"); interfaces->setInterfaceOption("address", ipAddressEdit->text()); @@ -144,4 +187,8 @@ void InterfaceSetupImp::setProfile(const QString &profile){ subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); + + qWarning("InterfaceSetupImp::setProfile(%s)\n", profile.latin1()); + qWarning("InterfaceSetupImp::setProfile: iface is %s\n", interfaces->getInterfaceName(error).latin1()); + } |