summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings/interfaces/interfacesetupimp.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.cpp47
1 files changed, 25 insertions, 22 deletions
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
index 49a47ae..8de30de 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
+++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
@@ -12,132 +12,132 @@
12#include <opie/oprocess.h> 12#include <opie/oprocess.h>
13 13
14#ifdef QWS 14#ifdef QWS
15#include <opie/owait.h> 15#include <opie/owait.h>
16#include <qpe/global.h> 16#include <qpe/global.h>
17#include <qapplication.h> 17#include <qapplication.h>
18#endif 18#endif
19 19
20#define DNSSCRIPT "changedns" 20#define DNSSCRIPT "changedns"
21 21
22/** 22/**
23 * Constuctor. Set up the connection. A profile must be set. 23 * Constuctor. Set up the connection. A profile must be set.
24 */ 24 */
25InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ 25InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){
26 if (j == 0) { 26 if (j == 0) {
27 delInterfaces = true; 27 delInterfaces = true;
28 interfaces = new Interfaces; 28 interfaces = new Interfaces;
29 } 29 }
30} 30}
31 31
32/** 32/**
33 * Destructor 33 * Destructor
34 */ 34 */
35InterfaceSetupImp::~InterfaceSetupImp(){ 35InterfaceSetupImp::~InterfaceSetupImp(){
36 if(delInterfaces) { 36 if(delInterfaces) {
37 delete interfaces; 37 delete interfaces;
38 } 38 }
39} 39}
40 40
41/** 41/**
42 * Save the current settings, then write out the interfaces file and close. 42 * Save the current settings, then write out the interfaces file and close.
43 */ 43 */
44bool InterfaceSetupImp::saveChanges(){ 44bool InterfaceSetupImp::saveChanges(){
45 bool error; 45 bool error;
46 QString iface = interfaces->getInterfaceName(error); 46 QString iface = interfaces->getInterfaceName(error);
47 if(!saveSettings()) 47 if(!saveSettings())
48 return false; 48 return false;
49 49
50 interfaces->write(); 50 interfaces->write();
51 51
52 if (interface->getStatus()) { 52 if (interface->getStatus()) {
53 QString ifup; 53 QString ifup;
54 ifup += "ifdown "; 54 ifup += "ifdown ";
55 ifup += iface; 55 ifup += iface;
56 ifup += "; ifup "; 56 ifup += "; ifup ";
57 ifup += iface; 57 ifup += iface;
58 ifup += ";"; 58 ifup += ";";
59 59
60 OProcess restart; 60 OProcess restart;
61 restart << "sh"; 61 restart << "sh";
62 restart << "-c"; 62 restart << "-c";
63 restart << ifup; 63 restart << ifup;
64 64
65 OWait *owait = new OWait(); 65 OWait *owait = new OWait();
66 Global::statusMessage( tr( "Restarting interface" ) ); 66 Global::statusMessage( tr( "Restarting interface" ) );
67 67
68 owait->show(); 68 owait->show();
69 qApp->processEvents(); 69 qApp->processEvents();
70 70
71 if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { 71 if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) {
72 qWarning("unstable to spawn ifdown/ifup"); 72 qWarning("unstable to spawn ifdown/ifup");
73 } 73 }
74 74
75 owait->hide(); 75 owait->hide();
76 delete owait; 76 delete owait;
77 77
78 interface->refresh(); 78 interface->refresh();
79 } 79 }
80 return true; 80 return true;
81} 81}
82 82
83/** 83/**
84 * Save the settings for the current Interface. 84 * Save the settings for the current Interface.
85 * @return bool true if successfull, false otherwise 85 * @return bool true if successfull, false otherwise
86 */ 86 */
87bool InterfaceSetupImp::saveSettings(){ 87bool InterfaceSetupImp::saveSettings(){
88 // eh can't really do anything about it other then return. :-D 88 // eh can't really do anything about it other then return. :-D
89 if(!interfaces->isInterfaceSet()) 89 if(!interfaces->isInterfaceSet())
90 return true; 90 return true;
91 91
92 bool error = false; 92 bool error = false;
93 // Loopback case 93 // Loopback case
94 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 94 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
95 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 95 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
96 return true; 96 return true;
97 } 97 }
98 98
99 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ 99 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){
100 QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); 100 QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok);
101 return false; 101 return false;
102 } 102 }
103 // DHCP 103 // DHCP
104 if(dhcpCheckBox->isChecked()) { 104 if(dhcpCheckBox->isChecked()) {
105 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); 105 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
106 interfaces->removeInterfaceOption("address"); 106 interfaces->removeInterfaceOption("address");
107 interfaces->removeInterfaceOption("netmask"); 107 interfaces->removeInterfaceOption("netmask");
108 interfaces->removeInterfaceOption("gateway"); 108 interfaces->removeInterfaceOption("gateway");
109 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); 109 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a ");
110 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); 110 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r ");
111 } else{ 111 } else{
112 interfaces->setInterfaceMethod("static"); 112 interfaces->setInterfaceMethod("static");
113 interfaces->setInterfaceOption("address", ipAddressEdit->text()); 113 interfaces->setInterfaceOption("address", ipAddressEdit->text());
114 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); 114 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
115 interfaces->setInterfaceOption("gateway", gatewayEdit->text()); 115 interfaces->setInterfaceOption("gateway", gatewayEdit->text());
116 if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ 116 if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){
117 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); 117 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
118 interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); 118 interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns);
119 interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); 119 interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns);
120 } 120 }
121 } 121 }
122 122
123 // IP Information 123 // IP Information
124 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 124 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
125 return true; 125 return true;
126} 126}
127 127
128/** 128/**
129 * The Profile has changed. 129 * The Profile has changed.
130 * @param QString profile the new profile. 130 * @param QString profile the new profile.
131 */ 131 */
132void InterfaceSetupImp::setProfile(const QString &profile){ 132void InterfaceSetupImp::setProfile(const QString &profile){
133 /* 133 /*
134 bool error = false; 134 bool error = false;
135 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 135 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
136 staticGroupBox->hide(); 136 staticGroupBox->hide();
137 dhcpCheckBox->hide(); 137 dhcpCheckBox->hide();
138 leaseTime->hide(); 138 leaseTime->hide();
139 leaseHoursLabel->hide(); 139 leaseHoursLabel->hide();
140 } 140 }
141 */ 141 */
142 142
143 QString newInterfaceName = interface->getInterfaceName(); 143 QString newInterfaceName = interface->getInterfaceName();
@@ -153,44 +153,47 @@ void InterfaceSetupImp::setProfile(const QString &profile){
153 if(!interfaces->setMapping(interface->getInterfaceName())){ 153 if(!interfaces->setMapping(interface->getInterfaceName())){
154 qDebug("InterfaceSetupImp: Added Mapping, but still can't setInterface."); 154 qDebug("InterfaceSetupImp: Added Mapping, but still can't setInterface.");
155 return; 155 return;
156 } 156 }
157 } 157 }
158 interfaces->setMap("map", newInterfaceName); 158 interfaces->setMap("map", newInterfaceName);
159 interfaces->setScript("getprofile.sh"); 159 interfaces->setScript("getprofile.sh");
160 } 160 }
161 else{ 161 else{
162 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); 162 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
163 if(!interfaces->setInterface(newInterfaceName)){ 163 if(!interfaces->setInterface(newInterfaceName)){
164 qDebug("InterfaceSetupImp: Added interface, but still can't setInterface."); 164 qDebug("InterfaceSetupImp: Added interface, but still can't setInterface.");
165 return; 165 return;
166 } 166 }
167 } 167 }
168 } 168 }
169 169
170 // We must have a valid interface to get this far so read some settings. 170 // We must have a valid interface to get this far so read some settings.
171 171
172 // DHCP 172 // DHCP
173 bool error = false; 173 bool error = false;
174 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) 174 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
175 dhcpCheckBox->setChecked(true); 175 dhcpCheckBox->setChecked(true);
176 else 176 else
177 dhcpCheckBox->setChecked(false); 177 dhcpCheckBox->setChecked(false);
178 178
179 // IP Information 179 // IP Information
180 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); 180 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
181 QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error); 181 QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error);
182 qDebug("dns >%s<",dns.latin1());
182 if(dns.contains(" ")){ 183 if(dns.contains(" ")){
183 firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); 184 firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
184 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); 185 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
185 } 186 }
186 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); 187 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
187 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); 188 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
188 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); 189 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
190
191
189 192
190 qWarning("InterfaceSetupImp::setProfile(%s)\n", profile.latin1()); 193 qWarning("InterfaceSetupImp::setProfile(%s)\n", profile.latin1());
191 qWarning("InterfaceSetupImp::setProfile: iface is %s\n", interfaces->getInterfaceName(error).latin1()); 194 qWarning("InterfaceSetupImp::setProfile: iface is %s\n", interfaces->getInterfaceName(error).latin1());
192 195
193} 196}
194 197
195// interfacesetup.cpp 198// interfacesetup.cpp
196 199