-rw-r--r-- | noncore/settings/networksettings/interfaces/interfacesetupimp.cpp | 57 |
1 files changed, 52 insertions, 5 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 @@ -8,8 +8,16 @@ #include <qlabel.h> #include <qmessagebox.h> +#include <opie/oprocess.h> + +#ifdef QWS +#include <opie/owait.h> +#include <qpe/global.h> +#include <qapplication.h> +#endif + #define DNSSCRIPT "changedns" /** * Constuctor. Set up the connection. A profile must be set. @@ -33,11 +41,43 @@ InterfaceSetupImp::~InterfaceSetupImp(){ /** * Save the current settings, then write out the interfaces file and close. */ 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; } /** @@ -59,14 +99,17 @@ bool InterfaceSetupImp::saveSettings(){ if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); 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()); interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); interfaces->setInterfaceOption("gateway", gatewayEdit->text()); @@ -95,9 +138,9 @@ void InterfaceSetupImp::setProfile(const QString &profile){ leaseTime->hide(); leaseHoursLabel->hide(); } */ - + QString newInterfaceName = interface->getInterfaceName(); if(profile.length() > 0) newInterfaceName += "_" + profile; // See if we have to make a interface. @@ -142,8 +185,12 @@ void InterfaceSetupImp::setProfile(const QString &profile){ } ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); 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()); + } // interfacesetup.cpp |