summaryrefslogtreecommitdiff
authorzecke <zecke>2004-04-06 08:00:49 (UTC)
committer zecke <zecke>2004-04-06 08:00:49 (UTC)
commit1b7592f11a2499c3e7d6652dde1ee15fb661fce2 (patch) (unidiff)
treefc9998d8037473f7bfb27274f60fbcdb26cc9d50
parent9aeac7cefc3c8baf32944e7275b57e0a0cde1515 (diff)
downloadopie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.zip
opie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.tar.gz
opie-1b7592f11a2499c3e7d6652dde1ee15fb661fce2.tar.bz2
one include of odebug.h a day keeps my anger away... :}
Add odebug.h so that it compiles
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/interfaces/interface.cpp3
-rw-r--r--noncore/settings/networksettings/interfaces/interfaces.cpp2
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.cpp1
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp1
4 files changed, 7 insertions, 0 deletions
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp
index d2b106a..46f3e19 100644
--- a/noncore/settings/networksettings/interfaces/interface.cpp
+++ b/noncore/settings/networksettings/interfaces/interface.cpp
@@ -1,198 +1,201 @@
1/** 1/**
2 * $Author$ 2 * $Author$
3 * $Date$ 3 * $Date$
4 */ 4 */
5 5
6#include "interface.h" 6#include "interface.h"
7
8#include <opie2/odebug.h>
9
7#include <qdatetime.h> 10#include <qdatetime.h>
8#include <qfile.h> 11#include <qfile.h>
9#include <qdir.h> 12#include <qdir.h>
10#include <qfileinfo.h> 13#include <qfileinfo.h>
11#include <qtextstream.h> 14#include <qtextstream.h>
12 15
13#define IFCONFIG "/sbin/ifconfig" 16#define IFCONFIG "/sbin/ifconfig"
14#define DHCP_INFO_DIR "/etc/dhcpc" 17#define DHCP_INFO_DIR "/etc/dhcpc"
15 18
16#include <stdio.h> 19#include <stdio.h>
17#include <stdlib.h> 20#include <stdlib.h>
18 21
19Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){ 22Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), hardwareName("Unknown"), moduleOwner(NULL), status(newSatus), attached(false), dhcp(false), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"){
20 refresh(); 23 refresh();
21} 24}
22 25
23/** 26/**
24 * Set status 27 * Set status
25 * @param newStatus - the new status 28 * @param newStatus - the new status
26 * emit updateInterface 29 * emit updateInterface
27 */ 30 */
28void Interface::setStatus(bool newStatus){ 31void Interface::setStatus(bool newStatus){
29 if(status != newStatus){ 32 if(status != newStatus){
30 status = newStatus; 33 status = newStatus;
31 refresh(); 34 refresh();
32 } 35 }
33}; 36};
34 37
35/** 38/**
36 * Set if attached or not (802.11 card pulled out for example) 39 * Set if attached or not (802.11 card pulled out for example)
37 * @param isAttached - if attached 40 * @param isAttached - if attached
38 * emit updateInterface 41 * emit updateInterface
39 */ 42 */
40void Interface::setAttached(bool isAttached){ 43void Interface::setAttached(bool isAttached){
41 attached = isAttached; 44 attached = isAttached;
42 emit(updateInterface(this)); 45 emit(updateInterface(this));
43}; 46};
44 47
45/** 48/**
46 * Set Hardware name 49 * Set Hardware name
47 * @param name - the new name 50 * @param name - the new name
48 * emit updateInterface 51 * emit updateInterface
49 */ 52 */
50void Interface::setHardwareName(const QString &name){ 53void Interface::setHardwareName(const QString &name){
51 hardwareName = name; 54 hardwareName = name;
52 emit(updateInterface(this)); 55 emit(updateInterface(this));
53}; 56};
54 57
55/** 58/**
56 * Set Module owner 59 * Set Module owner
57 * @param owner - the new owner 60 * @param owner - the new owner
58 * emit updateInterface 61 * emit updateInterface
59 */ 62 */
60void Interface::setModuleOwner(Module *owner){ 63void Interface::setModuleOwner(Module *owner){
61 moduleOwner = owner; 64 moduleOwner = owner;
62 emit(updateInterface(this)); 65 emit(updateInterface(this));
63}; 66};
64 67
65 68
66/** 69/**
67 * Try to start the interface. 70 * Try to start the interface.
68 */ 71 */
69void Interface::start(){ 72void Interface::start(){
70 // check to see if we are already running. 73 // check to see if we are already running.
71 if(true == status){ 74 if(true == status){
72 emit (updateMessage("Unable to start interface,\n already started")); 75 emit (updateMessage("Unable to start interface,\n already started"));
73 return; 76 return;
74 } 77 }
75 78
76 int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1()); 79 int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(this->name()).latin1());
77 // See if it was successful... 80 // See if it was successful...
78 if(ret != 0){ 81 if(ret != 0){
79 emit (updateMessage("Starting interface failed")); 82 emit (updateMessage("Starting interface failed"));
80 return; 83 return;
81 } 84 }
82 85
83 status = true; 86 status = true;
84 refresh(); 87 refresh();
85 emit (updateMessage("Start successful")); 88 emit (updateMessage("Start successful"));
86} 89}
87 90
88/** 91/**
89 * Try to stop the interface. 92 * Try to stop the interface.
90 */ 93 */
91void Interface::stop(){ 94void Interface::stop(){
92 // check to see if we are already stopped. 95 // check to see if we are already stopped.
93 if(false == status){ 96 if(false == status){
94 emit (updateMessage("Unable to stop interface,\n already stopped")); 97 emit (updateMessage("Unable to stop interface,\n already stopped"));
95 return; 98 return;
96 } 99 }
97 100
98 int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1()); 101 int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(this->name()).latin1());
99 if(ret != 0){ 102 if(ret != 0){
100 emit (updateMessage("Stopping interface failed")); 103 emit (updateMessage("Stopping interface failed"));
101 return; 104 return;
102 } 105 }
103 106
104 status = false; 107 status = false;
105 refresh(); 108 refresh();
106 emit (updateMessage("Stop successful")); 109 emit (updateMessage("Stop successful"));
107} 110}
108 111
109/** 112/**
110 * Try to restart the interface. 113 * Try to restart the interface.
111 */ 114 */
112void Interface::restart(){ 115void Interface::restart(){
113 stop(); 116 stop();
114 start(); 117 start();
115} 118}
116 119
117/** 120/**
118 * Try to refresh the information about the interface. 121 * Try to refresh the information about the interface.
119 * First call ifconfig, then check the dhcp-info file 122 * First call ifconfig, then check the dhcp-info file
120 * @return bool true if successful. 123 * @return bool true if successful.
121 */ 124 */
122bool Interface::refresh(){ 125bool Interface::refresh(){
123 // See if we are up. 126 // See if we are up.
124 if(status == false){ 127 if(status == false){
125 macAddress = ""; 128 macAddress = "";
126 ip = "0.0.0.0"; 129 ip = "0.0.0.0";
127 subnetMask = "0.0.0.0"; 130 subnetMask = "0.0.0.0";
128 broadcast = ""; 131 broadcast = "";
129 dhcp = false; 132 dhcp = false;
130 dhcpServerIp = ""; 133 dhcpServerIp = "";
131 leaseObtained = ""; 134 leaseObtained = "";
132 leaseExpires = ""; 135 leaseExpires = "";
133 emit(updateInterface(this)); 136 emit(updateInterface(this));
134 return true; 137 return true;
135 } 138 }
136 139
137 QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name()); 140 QString fileName = QString("/tmp/%1_ifconfig_info").arg(this->name());
138 int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1()); 141 int ret = system(QString("LANG=C %1 %2 > %3").arg(IFCONFIG).arg(this->name()).arg(fileName).latin1());
139 if(ret != 0){ 142 if(ret != 0){
140 odebug << QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1() << oendl; 143 odebug << QString("Interface: Ifconfig return value: %1, is not 0").arg(ret).latin1() << oendl;
141 return false; 144 return false;
142 } 145 }
143 146
144 QFile file(fileName); 147 QFile file(fileName);
145 if (!file.open(IO_ReadOnly)){ 148 if (!file.open(IO_ReadOnly)){
146 odebug << QString("Interface: Can't open file: %1").arg(fileName).latin1() << oendl; 149 odebug << QString("Interface: Can't open file: %1").arg(fileName).latin1() << oendl;
147 return false; 150 return false;
148 } 151 }
149 152
150 // Set to the defaults 153 // Set to the defaults
151 macAddress = ""; 154 macAddress = "";
152 ip = "0.0.0.0"; 155 ip = "0.0.0.0";
153 subnetMask = "0.0.0.0"; 156 subnetMask = "0.0.0.0";
154 broadcast = ""; 157 broadcast = "";
155 158
156 QTextStream stream( &file ); 159 QTextStream stream( &file );
157 QString line; 160 QString line;
158 while ( !stream.eof() ) { 161 while ( !stream.eof() ) {
159 line = stream.readLine(); 162 line = stream.readLine();
160 if(line.contains("HWaddr")){ 163 if(line.contains("HWaddr")){
161 int mac = line.find("HWaddr"); 164 int mac = line.find("HWaddr");
162 macAddress = line.mid(mac+7, line.length()); 165 macAddress = line.mid(mac+7, line.length());
163 } 166 }
164 if(line.contains("inet addr")){ 167 if(line.contains("inet addr")){
165 int ipl = line.find("inet addr"); 168 int ipl = line.find("inet addr");
166 int space = line.find(" ", ipl+10); 169 int space = line.find(" ", ipl+10);
167 ip = line.mid(ipl+10, space-ipl-10); 170 ip = line.mid(ipl+10, space-ipl-10);
168 } 171 }
169 if(line.contains("Mask")){ 172 if(line.contains("Mask")){
170 int mask = line.find("Mask"); 173 int mask = line.find("Mask");
171 subnetMask = line.mid(mask+5, line.length()); 174 subnetMask = line.mid(mask+5, line.length());
172 } 175 }
173 if(line.contains("Bcast")){ 176 if(line.contains("Bcast")){
174 int mask = line.find("Bcast"); 177 int mask = line.find("Bcast");
175 int space = line.find(" ", mask+6); 178 int space = line.find(" ", mask+6);
176 broadcast = line.mid(mask+6, space-mask-6); 179 broadcast = line.mid(mask+6, space-mask-6);
177 } 180 }
178 } 181 }
179 file.close(); 182 file.close();
180 QFile::remove(fileName); 183 QFile::remove(fileName);
181 184
182 // DHCP TESTING 185 // DHCP TESTING
183 // reset DHCP info 186 // reset DHCP info
184 dhcpServerIp = ""; 187 dhcpServerIp = "";
185 leaseObtained = ""; 188 leaseObtained = "";
186 leaseExpires = ""; 189 leaseExpires = "";
187 dhcp = false; 190 dhcp = false;
188 191
189 QString dhcpDirectory(DHCP_INFO_DIR); 192 QString dhcpDirectory(DHCP_INFO_DIR);
190 QDir d(dhcpDirectory); 193 QDir d(dhcpDirectory);
191 if(!d.exists(dhcpDirectory)) 194 if(!d.exists(dhcpDirectory))
192 dhcpDirectory = "/var/run"; 195 dhcpDirectory = "/var/run";
193 196
194 // See if we have 197 // See if we have
195 QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name())); 198 QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(this->name()));
196 // If there is no DHCP information then exit now with no errors. 199 // If there is no DHCP information then exit now with no errors.
197 if(!QFile::exists(dhcpFile)){ 200 if(!QFile::exists(dhcpFile)){
198 emit(updateInterface(this)); 201 emit(updateInterface(this));
diff --git a/noncore/settings/networksettings/interfaces/interfaces.cpp b/noncore/settings/networksettings/interfaces/interfaces.cpp
index e283926..5ce4b58 100644
--- a/noncore/settings/networksettings/interfaces/interfaces.cpp
+++ b/noncore/settings/networksettings/interfaces/interfaces.cpp
@@ -1,194 +1,196 @@
1#include "interfaces.h" 1#include "interfaces.h"
2 2
3#include <opie2/odebug.h>
4
3#include <qcheckbox.h> 5#include <qcheckbox.h>
4#include <qfile.h> 6#include <qfile.h>
5#include <qtextstream.h> 7#include <qtextstream.h>
6#include <qregexp.h> 8#include <qregexp.h>
7 9
8// The three stanza's 10// The three stanza's
9#define AUTO "auto" 11#define AUTO "auto"
10#define IFACE "iface" 12#define IFACE "iface"
11#define MAPPING "mapping" 13#define MAPPING "mapping"
12 14
13/** 15/**
14 * Constructor. Reads in the interfaces file and then split the file up by 16 * Constructor. Reads in the interfaces file and then split the file up by
15 * the \n for interfaces variable. 17 * the \n for interfaces variable.
16 * @param useInterfacesFile if an interface file other then the default is 18 * @param useInterfacesFile if an interface file other then the default is
17 * desired to be used it should be passed in. 19 * desired to be used it should be passed in.
18 */ 20 */
19Interfaces::Interfaces(QString useInterfacesFile){ 21Interfaces::Interfaces(QString useInterfacesFile){
20 acceptedFamily.append(INTERFACES_FAMILY_INET); 22 acceptedFamily.append(INTERFACES_FAMILY_INET);
21 acceptedFamily.append(INTERFACES_FAMILY_IPX); 23 acceptedFamily.append(INTERFACES_FAMILY_IPX);
22 acceptedFamily.append(INTERFACES_FAMILY_INET6); 24 acceptedFamily.append(INTERFACES_FAMILY_INET6);
23 25
24 interfacesFile = useInterfacesFile; 26 interfacesFile = useInterfacesFile;
25 QFile file(interfacesFile); 27 QFile file(interfacesFile);
26 if (!file.open(IO_ReadOnly)){ 28 if (!file.open(IO_ReadOnly)){
27 odebug << "Interfaces: Can't open file: " << interfacesFile.latin1() << " for reading." << oendl; 29 odebug << "Interfaces: Can't open file: " << interfacesFile.latin1() << " for reading." << oendl;
28 currentIface = interfaces.end(); 30 currentIface = interfaces.end();
29 currentMapping = interfaces.end(); 31 currentMapping = interfaces.end();
30 return; 32 return;
31 } 33 }
32 QTextStream stream( &file ); 34 QTextStream stream( &file );
33 QString line; 35 QString line;
34 while ( !stream.eof() ) { 36 while ( !stream.eof() ) {
35 line += stream.readLine(); 37 line += stream.readLine();
36 line += "\n"; 38 line += "\n";
37 } 39 }
38 file.close(); 40 file.close();
39 interfaces = QStringList::split("\n", line, true); 41 interfaces = QStringList::split("\n", line, true);
40 42
41 currentIface = interfaces.end(); 43 currentIface = interfaces.end();
42 currentMapping = interfaces.end(); 44 currentMapping = interfaces.end();
43} 45}
44 46
45 47
46/** 48/**
47 * Get a list of all interfaces in the interface file. Useful for 49 * Get a list of all interfaces in the interface file. Useful for
48 * hardware that is not currently connected such as an 802.11b card 50 * hardware that is not currently connected such as an 802.11b card
49 * not plugged in, but configured for when it is plugged in. 51 * not plugged in, but configured for when it is plugged in.
50 * @return Return string list of interfaces. 52 * @return Return string list of interfaces.
51 **/ 53 **/
52QStringList Interfaces::getInterfaceList(){ 54QStringList Interfaces::getInterfaceList(){
53 QStringList list; 55 QStringList list;
54 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 56 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
55 QString line = (*it).simplifyWhiteSpace(); 57 QString line = (*it).simplifyWhiteSpace();
56 if(line.contains(IFACE) && line.at(0) != '#'){ 58 if(line.contains(IFACE) && line.at(0) != '#'){
57 line = line.mid(QString(IFACE).length() +1, line.length()); 59 line = line.mid(QString(IFACE).length() +1, line.length());
58 line = line.simplifyWhiteSpace(); 60 line = line.simplifyWhiteSpace();
59 int findSpace = line.find(" "); 61 int findSpace = line.find(" ");
60 if( findSpace >= 0){ 62 if( findSpace >= 0){
61 line = line.mid(0, findSpace); 63 line = line.mid(0, findSpace);
62 list.append(line); 64 list.append(line);
63 } 65 }
64 } 66 }
65 } 67 }
66 return list; 68 return list;
67} 69}
68 70
69/** 71/**
70 * Find out if interface is in an "auto" group or not. 72 * Find out if interface is in an "auto" group or not.
71 * Report any duplicates such as eth0 being in two differnt auto's 73 * Report any duplicates such as eth0 being in two differnt auto's
72 * @param interface interface to check to see if it is on or not. 74 * @param interface interface to check to see if it is on or not.
73 * @return true is interface is in auto 75 * @return true is interface is in auto
74 */ 76 */
75bool Interfaces::isAuto(const QString &interface) const { 77bool Interfaces::isAuto(const QString &interface) const {
76 QStringList autoLines = interfaces.grep(QRegExp(AUTO)); 78 QStringList autoLines = interfaces.grep(QRegExp(AUTO));
77 QStringList awi = autoLines.grep(QRegExp(interface)); 79 QStringList awi = autoLines.grep(QRegExp(interface));
78 if(awi.count() > 1) 80 if(awi.count() > 1)
79 odebug << QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1() << oendl; 81 odebug << QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1() << oendl;
80 return awi.count() > 0; 82 return awi.count() > 0;
81} 83}
82 84
83/** 85/**
84 * Attempt to set the auto option for interface to setAuto. 86 * Attempt to set the auto option for interface to setAuto.
85 * @param interface the interface to set 87 * @param interface the interface to set
86 * @param setAuto the value to set interface to. 88 * @param setAuto the value to set interface to.
87 * @return false if already set to setAuto. 89 * @return false if already set to setAuto.
88 * */ 90 * */
89bool Interfaces::setAuto(const QString &interface, bool setAuto){ 91bool Interfaces::setAuto(const QString &interface, bool setAuto){
90 // Don't need to set it if it is already set. 92 // Don't need to set it if it is already set.
91 if(isAuto(interface) == setAuto) 93 if(isAuto(interface) == setAuto)
92 return false; 94 return false;
93 95
94 bool changed = false; 96 bool changed = false;
95 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) { 97 for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
96 if((*it).contains(AUTO)){ 98 if((*it).contains(AUTO)){
97 //We know that they are not in any group so let add to this auto. 99 //We know that they are not in any group so let add to this auto.
98 if(setAuto){ 100 if(setAuto){
99 (*it) = (*it) += " " + interface; 101 (*it) = (*it) += " " + interface;
100 // Don't care to have such thins as: auto eth0 lo usb0 102 // Don't care to have such thins as: auto eth0 lo usb0
101 (*it) = (*it).simplifyWhiteSpace(); 103 (*it) = (*it).simplifyWhiteSpace();
102 changed = true; 104 changed = true;
103 break; 105 break;
104 } 106 }
105 // else see if we need to remove from this one 107 // else see if we need to remove from this one
106 else{ 108 else{
107 if((*it).contains(interface)){ 109 if((*it).contains(interface)){
108 (*it) = (*it).replace(QRegExp(interface), ""); 110 (*it) = (*it).replace(QRegExp(interface), "");
109 // if AUTO is the only thing left clear the line 111 // if AUTO is the only thing left clear the line
110 if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO) 112 if(((*it).simplifyWhiteSpace()).replace(QRegExp(" "),"") == AUTO)
111 (*it) = ""; 113 (*it) = "";
112 changed = true; 114 changed = true;
113 // Don't break because we want to make sure we remove all cases. 115 // Don't break because we want to make sure we remove all cases.
114 } 116 }
115 } 117 }
116 } 118 }
117 } 119 }
118 // In the case where there is no AUTO field add one. 120 // In the case where there is no AUTO field add one.
119 if(!changed && setAuto) 121 if(!changed && setAuto)
120 interfaces.append(QString(AUTO" %1").arg(interface)); 122 interfaces.append(QString(AUTO" %1").arg(interface));
121 return true; 123 return true;
122} 124}
123 125
124/** 126/**
125 * Set the current interface to interface. This needs to be done before you 127 * Set the current interface to interface. This needs to be done before you
126 * can call getFamily(), getMethod, and get/setOption(). 128 * can call getFamily(), getMethod, and get/setOption().
127 * @param interface the name of the interface to set. All whitespace is 129 * @param interface the name of the interface to set. All whitespace is
128 * removed from the interface name. 130 * removed from the interface name.
129 * @return bool true if it is successful. 131 * @return bool true if it is successful.
130 */ 132 */
131bool Interfaces::setInterface(QString interface){ 133bool Interfaces::setInterface(QString interface){
132 interface = interface.simplifyWhiteSpace(); 134 interface = interface.simplifyWhiteSpace();
133 interface = interface.replace(QRegExp(" "), ""); 135 interface = interface.replace(QRegExp(" "), "");
134 return setStanza(IFACE, interface, currentIface); 136 return setStanza(IFACE, interface, currentIface);
135} 137}
136 138
137/** 139/**
138 * A quick helper funtion to see if the current interface is set. 140 * A quick helper funtion to see if the current interface is set.
139 * @return bool true if set, false otherwise. 141 * @return bool true if set, false otherwise.
140 */ 142 */
141bool Interfaces::isInterfaceSet() const { 143bool Interfaces::isInterfaceSet() const {
142 return (interfaces.end() != currentIface); 144 return (interfaces.end() != currentIface);
143} 145}
144 146
145/** 147/**
146 * Add a new interface of with the settings - family and method 148 * Add a new interface of with the settings - family and method
147 * @param interface the name of the interface to set. All whitespace is 149 * @param interface the name of the interface to set. All whitespace is
148 * removed from the interface name. 150 * removed from the interface name.
149 * @param family the family of this interface inet or inet, ipx or inet6 151 * @param family the family of this interface inet or inet, ipx or inet6
150 * Must of one of the families defined in interfaces.h 152 * Must of one of the families defined in interfaces.h
151 * @param method for the family. see interfaces man page for family methods. 153 * @param method for the family. see interfaces man page for family methods.
152 * @return true if successful. 154 * @return true if successful.
153 */ 155 */
154bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){ 156bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){
155 odebug << "Interfaces::addInterface(" << interface.latin1() << ")" << oendl; 157 odebug << "Interfaces::addInterface(" << interface.latin1() << ")" << oendl;
156 if(0 == acceptedFamily.contains(family)) 158 if(0 == acceptedFamily.contains(family))
157 return false; 159 return false;
158 QString newInterface = interface.simplifyWhiteSpace(); 160 QString newInterface = interface.simplifyWhiteSpace();
159 newInterface = newInterface.replace(QRegExp(" "), ""); 161 newInterface = newInterface.replace(QRegExp(" "), "");
160 interfaces.append(""); 162 interfaces.append("");
161 interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method)); 163 interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method));
162 return true; 164 return true;
163} 165}
164 166
165/** 167/**
166 * Copies interface with name interface to name newInterface 168 * Copies interface with name interface to name newInterface
167 * @param newInterface name of the new interface. 169 * @param newInterface name of the new interface.
168 * @return bool true if successful 170 * @return bool true if successful
169 */ 171 */
170bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){ 172bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){
171 odebug << "copy interface " << interface.latin1() << " to " << newInterface.latin1() << "" << oendl; 173 odebug << "copy interface " << interface.latin1() << " to " << newInterface.latin1() << "" << oendl;
172 if(!setInterface(interface)) 174 if(!setInterface(interface))
173 return false; 175 return false;
174 176
175 // Store the old interface and bump past the stanza line. 177 // Store the old interface and bump past the stanza line.
176 QStringList::Iterator it = currentIface; 178 QStringList::Iterator it = currentIface;
177 it++; 179 it++;
178 180
179 // Add the new interface 181 // Add the new interface
180 bool error; 182 bool error;
181 addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error)); 183 addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error));
182 if(!setInterface(newInterface)) 184 if(!setInterface(newInterface))
183 return false; 185 return false;
184 186
185 QStringList::Iterator newIface = currentIface; 187 QStringList::Iterator newIface = currentIface;
186 newIface++; 188 newIface++;
187 189
188 // Copy all of the lines 190 // Copy all of the lines
189 for ( ; it != interfaces.end(); ++it ){ 191 for ( ; it != interfaces.end(); ++it ){
190 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO))) 192 if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)))
191 break; 193 break;
192 newIface = interfaces.insert(newIface, *it); 194 newIface = interfaces.insert(newIface, *it);
193 } 195 }
194 196
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
index ec3bad3..8498759 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
+++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
@@ -1,207 +1,208 @@
1#include "interfacesetupimp.h" 1#include "interfacesetupimp.h"
2#include "interface.h" 2#include "interface.h"
3 3
4#include <qcheckbox.h> 4#include <qcheckbox.h>
5#include <qlineedit.h> 5#include <qlineedit.h>
6#include <qspinbox.h> 6#include <qspinbox.h>
7#include <qgroupbox.h> 7#include <qgroupbox.h>
8#include <qlabel.h> 8#include <qlabel.h>
9 9
10#include <qmessagebox.h> 10#include <qmessagebox.h>
11 11
12#include <opie2/oprocess.h> 12#include <opie2/oprocess.h>
13 13
14#ifdef QWS 14#ifdef QWS
15#include <opie2/owait.h> 15#include <opie2/owait.h>
16#include <opie2/odebug.h>
16#include <qpe/global.h> 17#include <qpe/global.h>
17#include <qapplication.h> 18#include <qapplication.h>
18#endif 19#endif
19 20
20#define DNSSCRIPT "changedns" 21#define DNSSCRIPT "changedns"
21 22
22/** 23/**
23 * Constuctor. Set up the connection. A profile must be set. 24 * Constuctor. Set up the connection. A profile must be set.
24 */ 25 */
25using namespace Opie::Ui; 26using namespace Opie::Ui;
26using namespace Opie::Core; 27using namespace Opie::Core;
27InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){ 28InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, Interfaces *j, WFlags fl) : InterfaceSetup(parent, name, fl), interface(i), interfaces(j), delInterfaces(false){
28 if (j == 0) { 29 if (j == 0) {
29 delInterfaces = true; 30 delInterfaces = true;
30 interfaces = new Interfaces; 31 interfaces = new Interfaces;
31 } 32 }
32} 33}
33 34
34/** 35/**
35 * Destructor 36 * Destructor
36 */ 37 */
37InterfaceSetupImp::~InterfaceSetupImp(){ 38InterfaceSetupImp::~InterfaceSetupImp(){
38 if(delInterfaces) { 39 if(delInterfaces) {
39 delete interfaces; 40 delete interfaces;
40 } 41 }
41} 42}
42 43
43/** 44/**
44 * Save the current settings, then write out the interfaces file and close. 45 * Save the current settings, then write out the interfaces file and close.
45 */ 46 */
46bool InterfaceSetupImp::saveChanges(){ 47bool InterfaceSetupImp::saveChanges(){
47 bool error; 48 bool error;
48 QString iface = interfaces->getInterfaceName(error); 49 QString iface = interfaces->getInterfaceName(error);
49 odebug << "InterfaceSetupImp::saveChanges saves interface " << iface.latin1() << "" << oendl; 50 odebug << "InterfaceSetupImp::saveChanges saves interface " << iface.latin1() << "" << oendl;
50 if(!saveSettings()) 51 if(!saveSettings())
51 return false; 52 return false;
52 53
53 interfaces->write(); 54 interfaces->write();
54 55
55 if (interface->getStatus()) { 56 if (interface->getStatus()) {
56 QString ifup; 57 QString ifup;
57 ifup += "ifdown "; 58 ifup += "ifdown ";
58 ifup += iface; 59 ifup += iface;
59 ifup += "; ifup "; 60 ifup += "; ifup ";
60 ifup += iface; 61 ifup += iface;
61 ifup += ";"; 62 ifup += ";";
62 63
63 OProcess restart; 64 OProcess restart;
64 restart << "sh"; 65 restart << "sh";
65 restart << "-c"; 66 restart << "-c";
66 restart << ifup; 67 restart << ifup;
67 68
68 OWait *owait = new OWait(); 69 OWait *owait = new OWait();
69 Global::statusMessage( tr( "Restarting interface" ) ); 70 Global::statusMessage( tr( "Restarting interface" ) );
70 71
71 owait->show(); 72 owait->show();
72 qApp->processEvents(); 73 qApp->processEvents();
73 74
74 if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) { 75 if (!restart.start(OProcess::Block, OProcess::NoCommunication) ) {
75 owarn << "unstable to spawn ifdown/ifup" << oendl; 76 owarn << "unstable to spawn ifdown/ifup" << oendl;
76 } 77 }
77 78
78 owait->hide(); 79 owait->hide();
79 delete owait; 80 delete owait;
80 81
81 interface->refresh(); 82 interface->refresh();
82 } 83 }
83 return true; 84 return true;
84} 85}
85 86
86/** 87/**
87 * Save the settings for the current Interface. 88 * Save the settings for the current Interface.
88 * @return bool true if successful, false otherwise 89 * @return bool true if successful, false otherwise
89 */ 90 */
90bool InterfaceSetupImp::saveSettings(){ 91bool InterfaceSetupImp::saveSettings(){
91 // eh can't really do anything about it other then return. :-D 92 // eh can't really do anything about it other then return. :-D
92 if(!interfaces->isInterfaceSet()) 93 if(!interfaces->isInterfaceSet())
93 return true; 94 return true;
94 95
95 bool error = false; 96 bool error = false;
96 // Loopback case 97 // Loopback case
97 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 98 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
98 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 99 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
99 return true; 100 return true;
100 } 101 }
101 102
102 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){ 103 if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){
103 QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok); 104 QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", QMessageBox::Ok);
104 return false; 105 return false;
105 } 106 }
106 // DHCP 107 // DHCP
107 if(dhcpCheckBox->isChecked()) { 108 if(dhcpCheckBox->isChecked()) {
108 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP); 109 interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
109 interfaces->removeInterfaceOption("address"); 110 interfaces->removeInterfaceOption("address");
110 interfaces->removeInterfaceOption("netmask"); 111 interfaces->removeInterfaceOption("netmask");
111 interfaces->removeInterfaceOption("gateway"); 112 interfaces->removeInterfaceOption("gateway");
112 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); 113 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a ");
113 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r "); 114 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r ");
114 } else{ 115 } else{
115 interfaces->setInterfaceMethod("static"); 116 interfaces->setInterfaceMethod("static");
116 interfaces->setInterfaceOption("address", ipAddressEdit->text()); 117 interfaces->setInterfaceOption("address", ipAddressEdit->text());
117 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text()); 118 interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
118 interfaces->setInterfaceOption("gateway", gatewayEdit->text()); 119 interfaces->setInterfaceOption("gateway", gatewayEdit->text());
119 if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){ 120 if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){
120 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text(); 121 QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
121 interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns); 122 interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns);
122 interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns); 123 interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns);
123 }else{ 124 }else{
124 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a "); 125 interfaces->removeInterfaceOption("up "DNSSCRIPT" -a ");
125 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r"); 126 interfaces->removeInterfaceOption("down "DNSSCRIPT" -r");
126 } 127 }
127 } 128 }
128 129
129 // IP Information 130 // IP Information
130 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked()); 131 interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
131 return true; 132 return true;
132} 133}
133 134
134/** 135/**
135 * The Profile has changed. 136 * The Profile has changed.
136 * @param QString profile the new profile. 137 * @param QString profile the new profile.
137 */ 138 */
138void InterfaceSetupImp::setProfile(const QString &profile){ 139void InterfaceSetupImp::setProfile(const QString &profile){
139 /* 140 /*
140 bool error = false; 141 bool error = false;
141 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){ 142 if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
142 staticGroupBox->hide(); 143 staticGroupBox->hide();
143 dhcpCheckBox->hide(); 144 dhcpCheckBox->hide();
144 leaseTime->hide(); 145 leaseTime->hide();
145 leaseHoursLabel->hide(); 146 leaseHoursLabel->hide();
146 } 147 }
147 */ 148 */
148 149
149 QString newInterfaceName = interface->getInterfaceName(); 150 QString newInterfaceName = interface->getInterfaceName();
150 if(profile.length() > 0) 151 if(profile.length() > 0)
151 newInterfaceName += "_" + profile; 152 newInterfaceName += "_" + profile;
152 // See if we have to make a interface. 153 // See if we have to make a interface.
153 if(!interfaces->setInterface(newInterfaceName)){ 154 if(!interfaces->setInterface(newInterfaceName)){
154 // Add making for this new interface if need too 155 // Add making for this new interface if need too
155 if(profile != ""){ 156 if(profile != ""){
156 interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName); 157 interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName);
157 if(!interfaces->setMapping(interface->getInterfaceName())){ 158 if(!interfaces->setMapping(interface->getInterfaceName())){
158 interfaces->addMapping(interface->getInterfaceName()); 159 interfaces->addMapping(interface->getInterfaceName());
159 if(!interfaces->setMapping(interface->getInterfaceName())){ 160 if(!interfaces->setMapping(interface->getInterfaceName())){
160 odebug << "InterfaceSetupImp: Added Mapping, but still can't setInterface." << oendl; 161 odebug << "InterfaceSetupImp: Added Mapping, but still can't setInterface." << oendl;
161 return; 162 return;
162 } 163 }
163 } 164 }
164 interfaces->setMap("map", newInterfaceName); 165 interfaces->setMap("map", newInterfaceName);
165 interfaces->setScript("getprofile.sh"); 166 interfaces->setScript("getprofile.sh");
166 } 167 }
167 else{ 168 else{
168 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP); 169 interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
169 if(!interfaces->setInterface(newInterfaceName)){ 170 if(!interfaces->setInterface(newInterfaceName)){
170 odebug << "InterfaceSetupImp: Added interface, but still can't setInterface." << oendl; 171 odebug << "InterfaceSetupImp: Added interface, but still can't setInterface." << oendl;
171 return; 172 return;
172 } 173 }
173 } 174 }
174 } 175 }
175 176
176 // We must have a valid interface to get this far so read some settings. 177 // We must have a valid interface to get this far so read some settings.
177 178
178 // DHCP 179 // DHCP
179 bool error = false; 180 bool error = false;
180 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP) 181 if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
181 dhcpCheckBox->setChecked(true); 182 dhcpCheckBox->setChecked(true);
182 else 183 else
183 dhcpCheckBox->setChecked(false); 184 dhcpCheckBox->setChecked(false);
184 185
185 // IP Information 186 // IP Information
186 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName())); 187 autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
187 QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error); 188 QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error);
188 odebug << "dns >" << dns.latin1() << "<" << oendl; 189 odebug << "dns >" << dns.latin1() << "<" << oendl;
189 if(dns.contains(" ")){ 190 if(dns.contains(" ")){
190 firstDNSLineEdit->setText(dns.mid(0, dns.find(" "))); 191 firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
191 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length())); 192 secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
192 }else firstDNSLineEdit->setText(dns); 193 }else firstDNSLineEdit->setText(dns);
193 194
194 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error)); 195 ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
195 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error)); 196 subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
196 if (subnetMaskEdit->text().isEmpty()) 197 if (subnetMaskEdit->text().isEmpty())
197 subnetMaskEdit->setText( "255.255.255.0" ); 198 subnetMaskEdit->setText( "255.255.255.0" );
198 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error)); 199 gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
199 200
200 201
201 202
202 owarn << "InterfaceSetupImp::setProfile(" << profile.latin1() << ")\n" << oendl; 203 owarn << "InterfaceSetupImp::setProfile(" << profile.latin1() << ")\n" << oendl;
203 owarn << "InterfaceSetupImp::setProfile: iface is " << interfaces->getInterfaceName(error).latin1() << "\n" << oendl; 204 owarn << "InterfaceSetupImp::setProfile: iface is " << interfaces->getInterfaceName(error).latin1() << "\n" << oendl;
204 205
205} 206}
206 207
207// interfacesetup.cpp 208// interfacesetup.cpp
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 3e1a650..5184630 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,201 +1,202 @@
1 1
2#include "mainwindowimp.h" 2#include "mainwindowimp.h"
3#include "addconnectionimp.h" 3#include "addconnectionimp.h"
4#include "interfaceinformationimp.h" 4#include "interfaceinformationimp.h"
5#include "interfacesetupimp.h" 5#include "interfacesetupimp.h"
6#include "interfaces.h" 6#include "interfaces.h"
7#include "module.h" 7#include "module.h"
8 8
9/* OPIE */ 9/* OPIE */
10#include <opie2/odebug.h>
10#include <qpe/qcopenvelope_qws.h> 11#include <qpe/qcopenvelope_qws.h>
11#include <qpe/qpeapplication.h> 12#include <qpe/qpeapplication.h>
12#include <qpe/config.h> 13#include <qpe/config.h>
13#include <qpe/qlibrary.h> 14#include <qpe/qlibrary.h>
14#include <qpe/resource.h> 15#include <qpe/resource.h>
15 16
16/* QT */ 17/* QT */
17#include <qpushbutton.h> 18#include <qpushbutton.h>
18#include <qlistbox.h> 19#include <qlistbox.h>
19#include <qlineedit.h> 20#include <qlineedit.h>
20#include <qlistview.h> 21#include <qlistview.h>
21#include <qheader.h> 22#include <qheader.h>
22#include <qlabel.h> 23#include <qlabel.h>
23#include <qtabwidget.h> // in order to disable the profiles tab 24#include <qtabwidget.h> // in order to disable the profiles tab
24#include <qmessagebox.h> 25#include <qmessagebox.h>
25 26
26 27
27#if QT_VERSION < 300 28#if QT_VERSION < 300
28#include <qlist.h> 29#include <qlist.h>
29#else 30#else
30#include <qptrlist.h> 31#include <qptrlist.h>
31#endif 32#endif
32#include <qdir.h> 33#include <qdir.h>
33#include <qfile.h> 34#include <qfile.h>
34#include <qtextstream.h> 35#include <qtextstream.h>
35#include <qregexp.h> 36#include <qregexp.h>
36 37
37/* STD */ 38/* STD */
38#include <net/if.h> 39#include <net/if.h>
39#include <sys/ioctl.h> 40#include <sys/ioctl.h>
40#include <sys/socket.h> 41#include <sys/socket.h>
41 42
42#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" 43#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
43#define _PROCNETDEV "/proc/net/dev" 44#define _PROCNETDEV "/proc/net/dev"
44 45
45MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME) 46MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME)
46{ 47{
47 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 48 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
48 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 49 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
49 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 50 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
50 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 51 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
51 52
52 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 53 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
53 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 54 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
54 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 55 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
55 56
56 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 57 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
57 58
58 //FIXME: disable profiles for the moment: 59 //FIXME: disable profiles for the moment:
59 tabWidget->setTabEnabled( tab, false ); 60 tabWidget->setTabEnabled( tab, false );
60 61
61 // Load connections. 62 // Load connections.
62 // /usr/local/kde/lib/libinterfaces.la 63 // /usr/local/kde/lib/libinterfaces.la
63#ifdef QWS 64#ifdef QWS
64 loadModules(QPEApplication::qpeDir() + "plugins/networksettings"); 65 loadModules(QPEApplication::qpeDir() + "plugins/networksettings");
65#else 66#else
66 loader = KLibLoader::self(); 67 loader = KLibLoader::self();
67 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib")); 68 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib"));
68#endif 69#endif
69 getAllInterfaces(); 70 getAllInterfaces();
70 71
71 Interfaces i; 72 Interfaces i;
72 QStringList list = i.getInterfaceList(); 73 QStringList list = i.getInterfaceList();
73 QMap<QString, Interface*>::Iterator it; 74 QMap<QString, Interface*>::Iterator it;
74 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) 75 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni )
75 { 76 {
76 /* 77 /*
77 * we skipped it in getAllInterfaces now 78 * we skipped it in getAllInterfaces now
78 * we need to ignore it as well 79 * we need to ignore it as well
79 */ 80 */
80 if (m_handledIfaces.contains( *ni) ) 81 if (m_handledIfaces.contains( *ni) )
81 { 82 {
82 odebug << "Not up iface handled by module" << oendl; 83 odebug << "Not up iface handled by module" << oendl;
83 continue; 84 continue;
84 } 85 }
85 bool found = false; 86 bool found = false;
86 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ) 87 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it )
87 { 88 {
88 if(it.key() == (*ni)) 89 if(it.key() == (*ni))
89 found = true; 90 found = true;
90 } 91 }
91 if(!found) 92 if(!found)
92 { 93 {
93 if(!(*ni).contains("_")) 94 if(!(*ni).contains("_"))
94 { 95 {
95 Interface *i = new Interface(this, *ni, false); 96 Interface *i = new Interface(this, *ni, false);
96 i->setAttached(false); 97 i->setAttached(false);
97 i->setHardwareName(tr("Disconnected")); 98 i->setHardwareName(tr("Disconnected"));
98 interfaceNames.insert(i->getInterfaceName(), i); 99 interfaceNames.insert(i->getInterfaceName(), i);
99 updateInterface(i); 100 updateInterface(i);
100 connect(i, SIGNAL(updateInterface(Interface*)), this, SLOT(updateInterface(Interface*))); 101 connect(i, SIGNAL(updateInterface(Interface*)), this, SLOT(updateInterface(Interface*)));
101 } 102 }
102 } 103 }
103 } 104 }
104 105
105 //getInterfaceList(); 106 //getInterfaceList();
106 connectionList->header()->hide(); 107 connectionList->header()->hide();
107 108
108 Config cfg("NetworkSetup"); 109 Config cfg("NetworkSetup");
109 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 110 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
110 for ( QStringList::Iterator it = profiles.begin(); 111 for ( QStringList::Iterator it = profiles.begin();
111 it != profiles.end(); ++it) 112 it != profiles.end(); ++it)
112 profilesList->insertItem((*it)); 113 profilesList->insertItem((*it));
113 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); 114 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
114 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 115 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
115 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); 116 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME);
116 117
117 QFile file(scheme); 118 QFile file(scheme);
118 if ( file.open(IO_ReadOnly) ) 119 if ( file.open(IO_ReadOnly) )
119 { // file opened successfully 120 { // file opened successfully
120 QTextStream stream( &file ); // use a text stream 121 QTextStream stream( &file ); // use a text stream
121 while ( !stream.eof() ) 122 while ( !stream.eof() )
122 { // until end of file... 123 { // until end of file...
123 QString line = stream.readLine(); // line of text excluding '\n' 124 QString line = stream.readLine(); // line of text excluding '\n'
124 if(line.contains("SCHEME")) 125 if(line.contains("SCHEME"))
125 { 126 {
126 line = line.mid(7, line.length()); 127 line = line.mid(7, line.length());
127 currentProfileLabel->setText(line); 128 currentProfileLabel->setText(line);
128 break; 129 break;
129 } 130 }
130 } 131 }
131 file.close(); 132 file.close();
132 } 133 }
133 makeChannel(); 134 makeChannel();
134} 135}
135 136
136/** 137/**
137 * Deconstructor. Save profiles. Delete loaded libraries. 138 * Deconstructor. Save profiles. Delete loaded libraries.
138 */ 139 */
139MainWindowImp::~MainWindowImp() 140MainWindowImp::~MainWindowImp()
140{ 141{
141 // Save profiles. 142 // Save profiles.
142 Config cfg("NetworkSetup"); 143 Config cfg("NetworkSetup");
143 cfg.setGroup("General"); 144 cfg.setGroup("General");
144 cfg.writeEntry("Profiles", profiles.join(" ")); 145 cfg.writeEntry("Profiles", profiles.join(" "));
145 146
146 // Delete all interfaces that don't have owners. 147 // Delete all interfaces that don't have owners.
147 QMap<Interface*, QListViewItem*>::Iterator iIt; 148 QMap<Interface*, QListViewItem*>::Iterator iIt;
148 for( iIt = items.begin(); iIt != items.end(); ++iIt ) 149 for( iIt = items.begin(); iIt != items.end(); ++iIt )
149 { 150 {
150 if(iIt.key()->getModuleOwner() == NULL) 151 if(iIt.key()->getModuleOwner() == NULL)
151 delete iIt.key(); 152 delete iIt.key();
152 } 153 }
153 154
154#ifdef QWS 155#ifdef QWS
155 // Delete Modules and Libraries 156 // Delete Modules and Libraries
156 QMap<Module*, QLibrary*>::Iterator it; 157 QMap<Module*, QLibrary*>::Iterator it;
157 for( it = libraries.begin(); it != libraries.end(); ++it ) 158 for( it = libraries.begin(); it != libraries.end(); ++it )
158 { 159 {
159 delete it.key(); 160 delete it.key();
160 // I wonder why I can't delete the libraries 161 // I wonder why I can't delete the libraries
161 // What fucking shit this is. 162 // What fucking shit this is.
162 //delete it.data(); 163 //delete it.data();
163 } 164 }
164#else 165#else
165 // klibloader automaticly deletes the libraries for us... 166 // klibloader automaticly deletes the libraries for us...
166#endif 167#endif
167} 168}
168 169
169/** 170/**
170 * Query the kernel for all of the interfaces. 171 * Query the kernel for all of the interfaces.
171 */ 172 */
172void MainWindowImp::getAllInterfaces() 173void MainWindowImp::getAllInterfaces()
173{ 174{
174 int sockfd = socket(PF_INET, SOCK_DGRAM, 0); 175 int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
175 if(sockfd == -1) 176 if(sockfd == -1)
176 return; 177 return;
177 178
178 struct ifreq ifr; 179 struct ifreq ifr;
179 QStringList ifaces; 180 QStringList ifaces;
180 QFile procFile(QString(_PROCNETDEV)); 181 QFile procFile(QString(_PROCNETDEV));
181 int result; 182 int result;
182 Interface *i; 183 Interface *i;
183 184
184 if (! procFile.exists()) 185 if (! procFile.exists())
185 { 186 {
186 struct ifreq ifrs[100]; 187 struct ifreq ifrs[100];
187 struct ifconf ifc; 188 struct ifconf ifc;
188 ifc.ifc_len = sizeof(ifrs); 189 ifc.ifc_len = sizeof(ifrs);
189 ifc.ifc_req = ifrs; 190 ifc.ifc_req = ifrs;
190 result = ioctl(sockfd, SIOCGIFCONF, &ifc); 191 result = ioctl(sockfd, SIOCGIFCONF, &ifc);
191 192
192 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) 193 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++)
193 { 194 {
194 struct ifreq *pifr = &ifrs[i]; 195 struct ifreq *pifr = &ifrs[i];
195 196
196 ifaces += pifr->ifr_name; 197 ifaces += pifr->ifr_name;
197 } 198 }
198 } 199 }
199 else 200 else
200 { 201 {
201 procFile.open(IO_ReadOnly); 202 procFile.open(IO_ReadOnly);