summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-04-15 00:40:18 (UTC)
committer kergoth <kergoth>2003-04-15 00:40:18 (UTC)
commit414e71d6189ffdeb07dcca8225ecf69331d0023c (patch) (side-by-side diff)
tree7f24b2508735537171aa308c20d499b696c0151a
parent54c3c91b776f277fdcf2e78621a28e98cc55ab5b (diff)
downloadopie-414e71d6189ffdeb07dcca8225ecf69331d0023c.zip
opie-414e71d6189ffdeb07dcca8225ecf69331d0023c.tar.gz
opie-414e71d6189ffdeb07dcca8225ecf69331d0023c.tar.bz2
1) When selecting dhcp, remove the static options, since we're no longer
removing all options. 2) Restart the network interface when saveChanges() is called. 3) Use OWait and a status message to give feedback to the user during the interface restart.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.cpp57
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
@@ -9,6 +9,14 @@
#include <qmessagebox.h>
+#include <opie/oprocess.h>
+
+#ifdef QWS
+#include <opie/owait.h>
+#include <qpe/global.h>
+#include <qapplication.h>
+#endif
+
#define DNSSCRIPT "changedns"
/**
@@ -34,9 +42,41 @@ 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;
}
@@ -60,12 +100,15 @@ bool InterfaceSetupImp::saveSettings(){
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());
@@ -96,7 +139,7 @@ void InterfaceSetupImp::setProfile(const QString &profile){
leaseHoursLabel->hide();
}
*/
-
+
QString newInterfaceName = interface->getInterfaceName();
if(profile.length() > 0)
newInterfaceName += "_" + profile;
@@ -143,6 +186,10 @@ 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