summaryrefslogtreecommitdiff
authortille <tille>2003-06-13 14:54:32 (UTC)
committer tille <tille>2003-06-13 14:54:32 (UTC)
commit006f7b028f03232e51dd6ceab35a7d492288fd22 (patch) (unidiff)
tree27fe264b7628f7ac4f17b925803b3f562f165fb7
parente5d826221bab71c39dc8fc89d91509dd16bc2a8a (diff)
downloadopie-006f7b028f03232e51dd6ceab35a7d492288fd22.zip
opie-006f7b028f03232e51dd6ceab35a7d492288fd22.tar.gz
opie-006f7b028f03232e51dd6ceab35a7d492288fd22.tar.bz2
qcop channels for ESSID, Channel and Mode
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp3
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp2
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.cpp50
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.h7
4 files changed, 42 insertions, 20 deletions
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 0ef1e68..5029525 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,666 +1,667 @@
1#include "mainwindowimp.h" 1#include "mainwindowimp.h"
2#include "addconnectionimp.h" 2#include "addconnectionimp.h"
3#include "interfaceinformationimp.h" 3#include "interfaceinformationimp.h"
4#include "interfacesetupimp.h" 4#include "interfacesetupimp.h"
5#include "interfaces.h" 5#include "interfaces.h"
6#include "module.h" 6#include "module.h"
7 7
8#include <qpushbutton.h> 8#include <qpushbutton.h>
9#include <qlistbox.h> 9#include <qlistbox.h>
10#include <qlineedit.h> 10#include <qlineedit.h>
11#include <qlistview.h> 11#include <qlistview.h>
12#include <qheader.h> 12#include <qheader.h>
13#include <qlabel.h> 13#include <qlabel.h>
14#include <qpe/qcopenvelope_qws.h> 14#include <qpe/qcopenvelope_qws.h>
15#include <qtabwidget.h> // in order to disable the profiles tab 15#include <qtabwidget.h> // in order to disable the profiles tab
16 16
17#include <qmessagebox.h> 17#include <qmessagebox.h>
18 18
19#ifdef QWS 19#ifdef QWS
20 #include <qpe/config.h> 20 #include <qpe/config.h>
21 #include <qpe/qlibrary.h> 21 #include <qpe/qlibrary.h>
22 #include <qpe/resource.h> 22 #include <qpe/resource.h>
23 #include <qpe/qpeapplication.h> 23 #include <qpe/qpeapplication.h>
24#else 24#else
25 #include <klibloader.h> 25 #include <klibloader.h>
26 #define QLibrary KLibrary 26 #define QLibrary KLibrary
27 #include <kconfig.h> 27 #include <kconfig.h>
28 #define Config KConfig 28 #define Config KConfig
29 #include <kapplication.h> 29 #include <kapplication.h>
30 #include <kstandarddirs.h> 30 #include <kstandarddirs.h>
31 #include <kiconloader.h> 31 #include <kiconloader.h>
32 #define showMaximized show 32 #define showMaximized show
33#endif 33#endif
34 34
35#if QT_VERSION < 300 35#if QT_VERSION < 300
36#include <qlist.h> 36#include <qlist.h>
37#else 37#else
38#include <qptrlist.h> 38#include <qptrlist.h>
39#endif 39#endif
40#include <qdir.h> 40#include <qdir.h>
41#include <qfile.h> 41#include <qfile.h>
42#include <qtextstream.h> 42#include <qtextstream.h>
43#include <qregexp.h> 43#include <qregexp.h>
44 44
45#include <net/if.h> 45#include <net/if.h>
46#include <sys/ioctl.h> 46#include <sys/ioctl.h>
47#include <sys/socket.h> 47#include <sys/socket.h>
48 48
49#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" 49#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
50#define _PROCNETDEV "/proc/net/dev" 50#define _PROCNETDEV "/proc/net/dev"
51 51
52MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name), advancedUserMode(true), scheme(DEFAULT_SCHEME){ 52MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name), advancedUserMode(true), scheme(DEFAULT_SCHEME){
53 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 53 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
54 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 54 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
55 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 55 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
56 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 56 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
57 57
58 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 58 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
59 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 59 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
60 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 60 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
61 61
62 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 62 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
63 63
64 //FIXME: disable profiles for the moment: 64 //FIXME: disable profiles for the moment:
65// tabWidget->setTabEnabled( tab, false ); 65// tabWidget->setTabEnabled( tab, false );
66 66
67 // Load connections. 67 // Load connections.
68 // /usr/local/kde/lib/libinterfaces.la 68 // /usr/local/kde/lib/libinterfaces.la
69#ifdef QWS 69#ifdef QWS
70 loadModules(QPEApplication::qpeDir() + "/plugins/networksettings"); 70 loadModules(QPEApplication::qpeDir() + "/plugins/networksettings");
71#else 71#else
72 loader = KLibLoader::self(); 72 loader = KLibLoader::self();
73 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib")); 73 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib"));
74#endif 74#endif
75 getAllInterfaces(); 75 getAllInterfaces();
76 76
77 Interfaces i; 77 Interfaces i;
78 QStringList list = i.getInterfaceList(); 78 QStringList list = i.getInterfaceList();
79 QMap<QString, Interface*>::Iterator it; 79 QMap<QString, Interface*>::Iterator it;
80 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) { 80 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
81 bool found = false; 81 bool found = false;
82 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){ 82 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
83 if(it.key() == (*ni)) 83 if(it.key() == (*ni))
84 found = true; 84 found = true;
85 } 85 }
86 if(!found){ 86 if(!found){
87 if(!(*ni).contains("_")){ 87 if(!(*ni).contains("_")){
88 Interface *i = new Interface(this, *ni, false); 88 Interface *i = new Interface(this, *ni, false);
89 i->setAttached(false); 89 i->setAttached(false);
90 i->setHardwareName(tr("Disconnected")); 90 i->setHardwareName(tr("Disconnected"));
91 interfaceNames.insert(i->getInterfaceName(), i); 91 interfaceNames.insert(i->getInterfaceName(), i);
92 updateInterface(i); 92 updateInterface(i);
93 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 93 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
94 } 94 }
95 } 95 }
96 } 96 }
97 97
98 //getInterfaceList(); 98 //getInterfaceList();
99 connectionList->header()->hide(); 99 connectionList->header()->hide();
100 100
101 Config cfg("NetworkSetup"); 101 Config cfg("NetworkSetup");
102 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 102 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
103 for ( QStringList::Iterator it = profiles.begin(); 103 for ( QStringList::Iterator it = profiles.begin();
104 it != profiles.end(); ++it) 104 it != profiles.end(); ++it)
105 profilesList->insertItem((*it)); 105 profilesList->insertItem((*it));
106 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); 106 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
107 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 107 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
108 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); 108 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME);
109 109
110 QFile file(scheme); 110 QFile file(scheme);
111 if ( file.open(IO_ReadOnly) ) { // file opened successfully 111 if ( file.open(IO_ReadOnly) ) { // file opened successfully
112 QTextStream stream( &file ); // use a text stream 112 QTextStream stream( &file ); // use a text stream
113 while ( !stream.eof() ) { // until end of file... 113 while ( !stream.eof() ) { // until end of file...
114 QString line = stream.readLine(); // line of text excluding '\n' 114 QString line = stream.readLine(); // line of text excluding '\n'
115 if(line.contains("SCHEME")){ 115 if(line.contains("SCHEME")){
116 line = line.mid(7, line.length()); 116 line = line.mid(7, line.length());
117 currentProfileLabel->setText(line); 117 currentProfileLabel->setText(line);
118 break; 118 break;
119 } 119 }
120 } 120 }
121 file.close(); 121 file.close();
122 } 122 }
123 makeChannel(); 123 makeChannel();
124} 124}
125 125
126/** 126/**
127 * Deconstructor. Save profiles. Delete loaded libraries. 127 * Deconstructor. Save profiles. Delete loaded libraries.
128 */ 128 */
129MainWindowImp::~MainWindowImp(){ 129MainWindowImp::~MainWindowImp(){
130 // Save profiles. 130 // Save profiles.
131 Config cfg("NetworkSetup"); 131 Config cfg("NetworkSetup");
132 cfg.setGroup("General"); 132 cfg.setGroup("General");
133 cfg.writeEntry("Profiles", profiles.join(" ")); 133 cfg.writeEntry("Profiles", profiles.join(" "));
134 134
135 // Delete all interfaces that don't have owners. 135 // Delete all interfaces that don't have owners.
136 QMap<Interface*, QListViewItem*>::Iterator iIt; 136 QMap<Interface*, QListViewItem*>::Iterator iIt;
137 for( iIt = items.begin(); iIt != items.end(); ++iIt ){ 137 for( iIt = items.begin(); iIt != items.end(); ++iIt ){
138 if(iIt.key()->getModuleOwner() == NULL) 138 if(iIt.key()->getModuleOwner() == NULL)
139 delete iIt.key(); 139 delete iIt.key();
140 } 140 }
141 141
142#ifdef QWS 142#ifdef QWS
143 // Delete Modules and Libraries 143 // Delete Modules and Libraries
144 QMap<Module*, QLibrary*>::Iterator it; 144 QMap<Module*, QLibrary*>::Iterator it;
145 for( it = libraries.begin(); it != libraries.end(); ++it ){ 145 for( it = libraries.begin(); it != libraries.end(); ++it ){
146 delete it.key(); 146 delete it.key();
147 // I wonder why I can't delete the libraries 147 // I wonder why I can't delete the libraries
148 // What fucking shit this is. 148 // What fucking shit this is.
149 //delete it.data(); 149 //delete it.data();
150 } 150 }
151#else 151#else
152 // klibloader automaticly deletes the libraries for us... 152 // klibloader automaticly deletes the libraries for us...
153#endif 153#endif
154} 154}
155 155
156/** 156/**
157 * Query the kernel for all of the interfaces. 157 * Query the kernel for all of the interfaces.
158 */ 158 */
159void MainWindowImp::getAllInterfaces(){ 159void MainWindowImp::getAllInterfaces(){
160 int sockfd = socket(PF_INET, SOCK_DGRAM, 0); 160 int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
161 if(sockfd == -1) 161 if(sockfd == -1)
162 return; 162 return;
163 163
164 struct ifreq ifr; 164 struct ifreq ifr;
165 QStringList ifaces; 165 QStringList ifaces;
166 QFile procFile(QString(_PROCNETDEV)); 166 QFile procFile(QString(_PROCNETDEV));
167 int result; 167 int result;
168 Interface *i; 168 Interface *i;
169 169
170 if (! procFile.exists()) { 170 if (! procFile.exists()) {
171 struct ifreq ifrs[100]; 171 struct ifreq ifrs[100];
172 struct ifconf ifc; 172 struct ifconf ifc;
173 ifc.ifc_len = sizeof(ifrs); 173 ifc.ifc_len = sizeof(ifrs);
174 ifc.ifc_req = ifrs; 174 ifc.ifc_req = ifrs;
175 result = ioctl(sockfd, SIOCGIFCONF, &ifc); 175 result = ioctl(sockfd, SIOCGIFCONF, &ifc);
176 176
177 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) { 177 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) {
178 struct ifreq *pifr = &ifrs[i]; 178 struct ifreq *pifr = &ifrs[i];
179 179
180 ifaces += pifr->ifr_name; 180 ifaces += pifr->ifr_name;
181 } 181 }
182 } else { 182 } else {
183 procFile.open(IO_ReadOnly); 183 procFile.open(IO_ReadOnly);
184 QString line; 184 QString line;
185 QTextStream procTs(&procFile); 185 QTextStream procTs(&procFile);
186 int loc = -1; 186 int loc = -1;
187 187
188 procTs.readLine(); // eat a line 188 procTs.readLine(); // eat a line
189 procTs.readLine(); // eat a line 189 procTs.readLine(); // eat a line
190 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { 190 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) {
191 if((loc = line.find(":")) != -1) { 191 if((loc = line.find(":")) != -1) {
192 ifaces += line.left(loc); 192 ifaces += line.left(loc);
193 } 193 }
194 } 194 }
195 } 195 }
196 196
197 for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it) { 197 for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it) {
198 int flags = 0; 198 int flags = 0;
199// int family; 199// int family;
200 i = NULL; 200 i = NULL;
201 201
202 strcpy(ifr.ifr_name, (*it).latin1()); 202 strcpy(ifr.ifr_name, (*it).latin1());
203 203
204 struct ifreq ifcopy; 204 struct ifreq ifcopy;
205 ifcopy = ifr; 205 ifcopy = ifr;
206 result = ioctl(sockfd, SIOCGIFFLAGS, &ifcopy); 206 result = ioctl(sockfd, SIOCGIFFLAGS, &ifcopy);
207 flags = ifcopy.ifr_flags; 207 flags = ifcopy.ifr_flags;
208 i = new Interface(this, ifr.ifr_name, false); 208 i = new Interface(this, ifr.ifr_name, false);
209 i->setAttached(true); 209 i->setAttached(true);
210 if ((flags & IFF_UP) == IFF_UP) 210 if ((flags & IFF_UP) == IFF_UP)
211 i->setStatus(true); 211 i->setStatus(true);
212 else 212 else
213 i->setStatus(false); 213 i->setStatus(false);
214 214
215 if ((flags & IFF_BROADCAST) == IFF_BROADCAST) 215 if ((flags & IFF_BROADCAST) == IFF_BROADCAST)
216 i->setHardwareName("Ethernet"); 216 i->setHardwareName("Ethernet");
217 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT) 217 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT)
218 i->setHardwareName("Point to Point"); 218 i->setHardwareName("Point to Point");
219 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST) 219 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST)
220 i->setHardwareName("Multicast"); 220 i->setHardwareName("Multicast");
221 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK) 221 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK)
222 i->setHardwareName("Loopback"); 222 i->setHardwareName("Loopback");
223 else 223 else
224 i->setHardwareName("Unknown"); 224 i->setHardwareName("Unknown");
225 225
226 qWarning("Adding interface %s to interfaceNames\n", ifr.ifr_name); 226 qWarning("Adding interface %s to interfaceNames\n", ifr.ifr_name);
227 interfaceNames.insert(i->getInterfaceName(), i); 227 interfaceNames.insert(i->getInterfaceName(), i);
228 updateInterface(i); 228 updateInterface(i);
229 connect(i, SIGNAL(updateInterface(Interface *)), 229 connect(i, SIGNAL(updateInterface(Interface *)),
230 this, SLOT(updateInterface(Interface *))); 230 this, SLOT(updateInterface(Interface *)));
231 } 231 }
232 // now lets ask the plugins too ;) 232 // now lets ask the plugins too ;)
233 QMap<Module*, QLibrary*>::Iterator it; 233 QMap<Module*, QLibrary*>::Iterator it;
234 QList<Interface> ilist; 234 QList<Interface> ilist;
235 for( it = libraries.begin(); it != libraries.end(); ++it ){ 235 for( it = libraries.begin(); it != libraries.end(); ++it ){
236 if(it.key()){ 236 if(it.key()){
237 ilist = it.key()->getInterfaces(); 237 ilist = it.key()->getInterfaces();
238 for( i = ilist.first(); i != 0; i = ilist.next() ){ 238 for( i = ilist.first(); i != 0; i = ilist.next() ){
239 qWarning("Adding interface %s to interfaceNames\n", i->getInterfaceName().latin1() ); 239 qWarning("Adding interface %s to interfaceNames\n", i->getInterfaceName().latin1() );
240 interfaceNames.insert(i->getInterfaceName(), i); 240 interfaceNames.insert(i->getInterfaceName(), i);
241 updateInterface(i); 241 updateInterface(i);
242 connect(i, SIGNAL(updateInterface(Interface *)), 242 connect(i, SIGNAL(updateInterface(Interface *)),
243 this, SLOT(updateInterface(Interface *))); 243 this, SLOT(updateInterface(Interface *)));
244 } 244 }
245 } 245 }
246 } 246 }
247} 247}
248 248
249/** 249/**
250 * Load all modules that are found in the path 250 * Load all modules that are found in the path
251 * @param path a directory that is scaned for any plugins that can be loaded 251 * @param path a directory that is scaned for any plugins that can be loaded
252 * and attempts to load them 252 * and attempts to load them
253 */ 253 */
254void MainWindowImp::loadModules(const QString &path){ 254void MainWindowImp::loadModules(const QString &path){
255#ifdef DEBUG 255#ifdef DEBUG
256 qDebug("MainWindowImp::loadModules: %s", path.latin1()); 256 qDebug("MainWindowImp::loadModules: %s", path.latin1());
257#endif 257#endif
258 QDir d(path); 258 QDir d(path);
259 if(!d.exists()) 259 if(!d.exists())
260 return; 260 return;
261 261
262 // Don't want sym links 262 // Don't want sym links
263 d.setFilter( QDir::Files | QDir::NoSymLinks ); 263 d.setFilter( QDir::Files | QDir::NoSymLinks );
264 const QFileInfoList *list = d.entryInfoList(); 264 const QFileInfoList *list = d.entryInfoList();
265 QFileInfoListIterator it( *list ); 265 QFileInfoListIterator it( *list );
266 QFileInfo *fi; 266 QFileInfo *fi;
267 while ( (fi=it.current()) ) { 267 while ( (fi=it.current()) ) {
268#ifdef QWS 268#ifdef QWS
269 if(fi->fileName().contains(".so")){ 269 if(fi->fileName().contains(".so")){
270#else 270#else
271 if(fi->fileName().contains(".so") && fi->fileName().contains("networksettings_")){ 271 if(fi->fileName().contains(".so") && fi->fileName().contains("networksettings_")){
272#endif 272#endif
273 loadPlugin(path + "/" + fi->fileName()); 273 loadPlugin(path + "/" + fi->fileName());
274 qDebug("loaded plugin: >%s< ",QString(path + "/" + fi->fileName()).latin1()); 274 qDebug("loaded plugin: >%s< ",QString(path + "/" + fi->fileName()).latin1());
275 } 275 }
276 ++it; 276 ++it;
277 } 277 }
278} 278}
279 279
280/** 280/**
281 * Attempt to load a function and resolve a function. 281 * Attempt to load a function and resolve a function.
282 * @param pluginFileName - the name of the file in which to attempt to load 282 * @param pluginFileName - the name of the file in which to attempt to load
283 * @param resolveString - function pointer to resolve 283 * @param resolveString - function pointer to resolve
284 * @return pointer to the function with name resolveString or NULL 284 * @return pointer to the function with name resolveString or NULL
285 */ 285 */
286Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){ 286Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){
287#ifdef DEBUG 287#ifdef DEBUG
288 qDebug("MainWindowImp::loadPlugin: %s: resolving %s", pluginFileName.latin1(), resolveString.latin1()); 288 qDebug("MainWindowImp::loadPlugin: %s: resolving %s", pluginFileName.latin1(), resolveString.latin1());
289#endif 289#endif
290#ifdef QWS 290#ifdef QWS
291 QLibrary *lib = new QLibrary(pluginFileName); 291 QLibrary *lib = new QLibrary(pluginFileName);
292 void *functionPointer = lib->resolve(resolveString); 292 void *functionPointer = lib->resolve(resolveString);
293 if( !functionPointer ){ 293 if( !functionPointer ){
294#ifdef DEBUG 294#ifdef DEBUG
295 qDebug("MainWindowImp::loadPlugin: Warning: %s is not a plugin", pluginFileName.latin1()); 295 qDebug("MainWindowImp::loadPlugin: Warning: %s is not a plugin", pluginFileName.latin1());
296#endif 296#endif
297 delete lib; 297 delete lib;
298 return NULL; 298 return NULL;
299 } 299 }
300 // Try to get an object. 300 // Try to get an object.
301 Module *object = ((Module* (*)()) functionPointer)(); 301 Module *object = ((Module* (*)()) functionPointer)();
302 if(object == NULL){ 302 if(object == NULL){
303#ifdef DEBUG 303#ifdef DEBUG
304 qDebug("MainWindowImp: Couldn't create object, but did load library!"); 304 qDebug("MainWindowImp: Couldn't create object, but did load library!");
305#endif 305#endif
306 delete lib; 306 delete lib;
307 return NULL; 307 return NULL;
308 } 308 }
309 309
310 // Store for deletion later 310 // Store for deletion later
311 libraries.insert(object, lib); 311 libraries.insert(object, lib);
312 return object; 312 return object;
313 313
314#else 314#else
315 QLibrary *lib = loader->library(pluginFileName); 315 QLibrary *lib = loader->library(pluginFileName);
316 if( !lib || !lib->hasSymbol(resolveString) ){ 316 if( !lib || !lib->hasSymbol(resolveString) ){
317 qDebug(QString("MainWindowImp::loadPlugin: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1()); 317 qDebug(QString("MainWindowImp::loadPlugin: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
318 return NULL; 318 return NULL;
319 } 319 }
320 // Try to get an object. 320 // Try to get an object.
321 Module *object = ((Module* (*)()) lib->symbol(resolveString))(); 321 Module *object = ((Module* (*)()) lib->symbol(resolveString))();
322 if(object == NULL){ 322 if(object == NULL){
323#ifdef DEBUG 323#ifdef DEBUG
324 qDebug("MainWindowImp: Couldn't create object, but did load library!"); 324 qDebug("MainWindowImp: Couldn't create object, but did load library!");
325#endif 325#endif
326 return NULL; 326 return NULL;
327 } 327 }
328#ifdef DEBUG 328#ifdef DEBUG
329 qDebug("MainWindowImp::loadPlugin:: Found object, storing."); 329 qDebug("MainWindowImp::loadPlugin:: Found object, storing.");
330#endif 330#endif
331 // Store for deletion later 331 // Store for deletion later
332 libraries.insert(object, lib); 332 libraries.insert(object, lib);
333 return object; 333 return object;
334#endif 334#endif
335} 335}
336 336
337/** 337/**
338 * The Add button was clicked. Bring up the add dialog and if OK is hit 338 * The Add button was clicked. Bring up the add dialog and if OK is hit
339 * load the plugin and append it to the list 339 * load the plugin and append it to the list
340 */ 340 */
341void MainWindowImp::addClicked(){ 341void MainWindowImp::addClicked(){
342 QMap<Module*, QLibrary*>::Iterator it; 342 QMap<Module*, QLibrary*>::Iterator it;
343 QMap<QString, QString> list; 343 QMap<QString, QString> list;
344 QMap<QString, Module*> newInterfaceOwners; 344 QMap<QString, Module*> newInterfaceOwners;
345 345
346 for( it = libraries.begin(); it != libraries.end(); ++it ){ 346 for( it = libraries.begin(); it != libraries.end(); ++it ){
347 if(it.key()){ 347 if(it.key()){
348 (it.key())->possibleNewInterfaces(list); 348 (it.key())->possibleNewInterfaces(list);
349 } 349 }
350 } 350 }
351 // See if the list has anything that we can add. 351 // See if the list has anything that we can add.
352 if(list.count() == 0){ 352 if(list.count() == 0){
353 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok); 353 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok);
354 return; 354 return;
355 } 355 }
356 AddConnectionImp addNewConnection(this, "AddConnectionImp", true); 356 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
357 addNewConnection.addConnections(list); 357 addNewConnection.addConnections(list);
358 addNewConnection.showMaximized(); 358 addNewConnection.showMaximized();
359 if(QDialog::Accepted == addNewConnection.exec()){ 359 if(QDialog::Accepted == addNewConnection.exec()){
360 QListViewItem *item = addNewConnection.registeredServicesList->currentItem(); 360 QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
361 if(!item) 361 if(!item)
362 return; 362 return;
363 363
364 for( it = libraries.begin(); it != libraries.end(); ++it ){ 364 for( it = libraries.begin(); it != libraries.end(); ++it ){
365 if(it.key()){ 365 if(it.key()){
366 Interface *i = (it.key())->addNewInterface(item->text(0)); 366 Interface *i = (it.key())->addNewInterface(item->text(0));
367 if(i){ 367 if(i){
368 qDebug("iface name %s",i->getInterfaceName().latin1()); 368 qDebug("iface name %s",i->getInterfaceName().latin1());
369 interfaceNames.insert(i->getInterfaceName(), i); 369 interfaceNames.insert(i->getInterfaceName(), i);
370 updateInterface(i); 370 updateInterface(i);
371 } 371 }
372 } 372 }
373 } 373 }
374 } 374 }
375} 375}
376 376
377/** 377/**
378 * Prompt the user to see if they really want to do this. 378 * Prompt the user to see if they really want to do this.
379 * If they do then remove from the list and unload. 379 * If they do then remove from the list and unload.
380 */ 380 */
381void MainWindowImp::removeClicked(){ 381void MainWindowImp::removeClicked(){
382 QListViewItem *item = connectionList->currentItem(); 382 QListViewItem *item = connectionList->currentItem();
383 if(!item) { 383 if(!item) {
384 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok); 384 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
385 return; 385 return;
386 } 386 }
387 387
388 Interface *i = interfaceItems[item]; 388 Interface *i = interfaceItems[item];
389 if(i->getModuleOwner() == NULL){ 389 if(i->getModuleOwner() == NULL){
390 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", QMessageBox::Ok); 390 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", QMessageBox::Ok);
391 } 391 }
392 else{ 392 else{
393 if(!i->getModuleOwner()->remove(i)) 393 if(!i->getModuleOwner()->remove(i))
394 QMessageBox::information(this, tr("Error"), tr("Unable to remove."), QMessageBox::Ok); 394 QMessageBox::information(this, tr("Error"), tr("Unable to remove."), QMessageBox::Ok);
395 else{ 395 else{
396 delete item; 396 delete item;
397// QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok); 397// QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok);
398 } 398 }
399 } 399 }
400} 400}
401 401
402/** 402/**
403 * Pull up the configure about the currently selected interface. 403 * Pull up the configure about the currently selected interface.
404 * Report an error if no interface is selected. 404 * Report an error if no interface is selected.
405 * If the interface has a module owner then request its configure. 405 * If the interface has a module owner then request its configure.
406 */ 406 */
407void MainWindowImp::configureClicked(){ 407void MainWindowImp::configureClicked(){
408 QListViewItem *item = connectionList->currentItem(); 408 QListViewItem *item = connectionList->currentItem();
409 if(!item){ 409 if(!item){
410 QMessageBox::information(this, tr("Sorry"),tr("Please select an interface first."), QMessageBox::Ok); 410 QMessageBox::information(this, tr("Sorry"),tr("Please select an interface first."), QMessageBox::Ok);
411 return; 411 return;
412 } 412 }
413 413
414 QString currentProfileText = currentProfileLabel->text(); 414 QString currentProfileText = currentProfileLabel->text();
415 if(currentProfileText.upper() == "ALL"); 415 if(currentProfileText.upper() == "ALL");
416 currentProfileText = ""; 416 currentProfileText = "";
417 417
418 Interface *i = interfaceItems[item]; 418 Interface *i = interfaceItems[item];
419 419
420 if(i->getModuleOwner()){ 420 if(i->getModuleOwner()){
421 QWidget *moduleConfigure = i->getModuleOwner()->configure(i); 421 QWidget *moduleConfigure = i->getModuleOwner()->configure(i);
422 if(moduleConfigure != NULL){ 422 if(moduleConfigure != NULL){
423 i->getModuleOwner()->setProfile(currentProfileText); 423 i->getModuleOwner()->setProfile(currentProfileText);
424 moduleConfigure->showMaximized(); 424 moduleConfigure->showMaximized();
425 return; 425 return;
426 } 426 }
427 } 427 }
428 428
429 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WDestructiveClose ); 429 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WDestructiveClose );
430 configure->setProfile(currentProfileText); 430 configure->setProfile(currentProfileText);
431 configure->showMaximized(); 431 configure->showMaximized();
432} 432}
433 433
434/** 434/**
435 * Pull up the information about the currently selected interface. 435 * Pull up the information about the currently selected interface.
436 * Report an error if no interface is selected. 436 * Report an error if no interface is selected.
437 * If the interface has a module owner then request its configure. 437 * If the interface has a module owner then request its configure.
438 */ 438 */
439void MainWindowImp::informationClicked(){ 439void MainWindowImp::informationClicked(){
440 QListViewItem *item = connectionList->currentItem(); 440 QListViewItem *item = connectionList->currentItem();
441 if(!item){ 441 if(!item){
442 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok); 442 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
443 return; 443 return;
444 } 444 }
445 445
446 Interface *i = interfaceItems[item]; 446 Interface *i = interfaceItems[item];
447// if(!i->isAttached()){ 447// if(!i->isAttached()){
448// QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok); 448// QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok);
449// return; 449// return;
450// } 450// }
451 451
452 if(i->getModuleOwner()){ 452 if(i->getModuleOwner()){
453 QWidget *moduleInformation = i->getModuleOwner()->information(i); 453 QWidget *moduleInformation = i->getModuleOwner()->information(i);
454 if(moduleInformation != NULL){ 454 if(moduleInformation != NULL){
455 moduleInformation->showMaximized(); 455 moduleInformation->showMaximized();
456#ifdef DEBUG 456#ifdef DEBUG
457 qDebug("MainWindowImp::informationClicked:: Module owner has created, we showed."); 457 qDebug("MainWindowImp::informationClicked:: Module owner has created, we showed.");
458#endif 458#endif
459 return; 459 return;
460 } 460 }
461 } 461 }
462 InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog); 462 InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog);
463 information->showMaximized(); 463 information->showMaximized();
464} 464}
465 465
466/** 466/**
467 * Update this interface. If no QListViewItem exists create one. 467 * Update this interface. If no QListViewItem exists create one.
468 * @param Interface* pointer to the interface that needs to be updated. 468 * @param Interface* pointer to the interface that needs to be updated.
469 */ 469 */
470void MainWindowImp::updateInterface(Interface *i){ 470void MainWindowImp::updateInterface(Interface *i){
471 if(!advancedUserMode){ 471 if(!advancedUserMode){
472 if(i->getInterfaceName() == "lo") 472 if(i->getInterfaceName() == "lo")
473 return; 473 return;
474 } 474 }
475 475
476 QListViewItem *item = NULL; 476 QListViewItem *item = NULL;
477 477
478 // Find the interface, making it if needed. 478 // Find the interface, making it if needed.
479 if(items.find(i) == items.end()){ 479 if(items.find(i) == items.end()){
480 item = new QListViewItem(connectionList, "", "", ""); 480 item = new QListViewItem(connectionList, "", "", "");
481 // See if you can't find a module owner for this interface 481 // See if you can't find a module owner for this interface
482 QMap<Module*, QLibrary*>::Iterator it; 482 QMap<Module*, QLibrary*>::Iterator it;
483 for( it = libraries.begin(); it != libraries.end(); ++it ){ 483 for( it = libraries.begin(); it != libraries.end(); ++it ){
484 if(it.key()->isOwner(i)) 484 if(it.key()->isOwner(i))
485 i->setModuleOwner(it.key()); 485 i->setModuleOwner(it.key());
486 } 486 }
487 items.insert(i, item); 487 items.insert(i, item);
488 interfaceItems.insert(item, i); 488 interfaceItems.insert(item, i);
489 } 489 }
490 else 490 else
491 item = items[i]; 491 item = items[i];
492 492
493 // Update the icons and information 493 // Update the icons and information
494#ifdef QWS 494#ifdef QWS
495 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down"))); 495 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down")));
496#else 496#else
497 item->setPixmap(0, (SmallIcon(i->getStatus() ? "up": "down"))); 497 item->setPixmap(0, (SmallIcon(i->getStatus() ? "up": "down")));
498#endif 498#endif
499 499
500 QString typeName = "lan"; 500 QString typeName = "lan";
501 if(i->getInterfaceName() == "lo") 501 if(i->getInterfaceName() == "lo")
502 typeName = "lo"; 502 typeName = "lo";
503 if(i->getInterfaceName().contains("irda")) 503 if(i->getInterfaceName().contains("irda"))
504 typeName = "irda"; 504 typeName = "irda";
505 if(i->getInterfaceName().contains("wlan")) 505 if(i->getInterfaceName().contains("wlan"))
506 typeName = "wlan"; 506 typeName = "wlan";
507 if(i->getInterfaceName().contains("usb")) 507 if(i->getInterfaceName().contains("usb"))
508 typeName = "usb"; 508 typeName = "usb";
509 509
510 if(!i->isAttached()) 510 if(!i->isAttached())
511 typeName = "connect_no"; 511 typeName = "connect_no";
512 // Actually try to use the Module 512 // Actually try to use the Module
513 if(i->getModuleOwner() != NULL) 513 if(i->getModuleOwner() != NULL)
514 typeName = i->getModuleOwner()->getPixmapName(i); 514 typeName = i->getModuleOwner()->getPixmapName(i);
515 515
516#ifdef QWS 516#ifdef QWS
517 item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName))); 517 item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName)));
518#else 518#else
519 item->setPixmap(1, (SmallIcon(typeName))); 519 item->setPixmap(1, (SmallIcon(typeName)));
520#endif 520#endif
521 item->setText(2, i->getHardwareName()); 521 item->setText(2, i->getHardwareName());
522 item->setText(3, QString("(%1)").arg(i->getInterfaceName())); 522 item->setText(3, QString("(%1)").arg(i->getInterfaceName()));
523 item->setText(4, (i->getStatus()) ? i->getIp() : QString("")); 523 item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
524} 524}
525 525
526void MainWindowImp::newProfileChanged(const QString& newText){ 526void MainWindowImp::newProfileChanged(const QString& newText){
527 if(newText.length() > 0) 527 if(newText.length() > 0)
528 newProfileButton->setEnabled(true); 528 newProfileButton->setEnabled(true);
529 else 529 else
530 newProfileButton->setEnabled(false); 530 newProfileButton->setEnabled(false);
531} 531}
532 532
533/** 533/**
534 * Adds a new profile to the list of profiles. 534 * Adds a new profile to the list of profiles.
535 * Don't add profiles that already exists. 535 * Don't add profiles that already exists.
536 * Appends to the list and QStringList 536 * Appends to the list and QStringList
537 */ 537 */
538void MainWindowImp::addProfile(){ 538void MainWindowImp::addProfile(){
539 QString newProfileName = newProfile->text(); 539 QString newProfileName = newProfile->text();
540 if(profiles.grep(newProfileName).count() > 0){ 540 if(profiles.grep(newProfileName).count() > 0){
541 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok); 541 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok);
542 return; 542 return;
543 } 543 }
544 profiles.append(newProfileName); 544 profiles.append(newProfileName);
545 profilesList->insertItem(newProfileName); 545 profilesList->insertItem(newProfileName);
546} 546}
547 547
548/** 548/**
549 * Removes the currently selected profile in the combo. 549 * Removes the currently selected profile in the combo.
550 * Doesn't delete if there are less then 2 profiles. 550 * Doesn't delete if there are less then 2 profiles.
551 */ 551 */
552void MainWindowImp::removeProfile(){ 552void MainWindowImp::removeProfile(){
553 if(profilesList->count() <= 1){ 553 if(profilesList->count() <= 1){
554 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok); 554 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok);
555 return; 555 return;
556 } 556 }
557 QString profileToRemove = profilesList->currentText(); 557 QString profileToRemove = profilesList->currentText();
558 if(profileToRemove == "All"){ 558 if(profileToRemove == "All"){
559 QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok); 559 QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok);
560 return; 560 return;
561 } 561 }
562 // Can't remove the curent profile 562 // Can't remove the curent profile
563 if(profileToRemove == currentProfileLabel->text()){ 563 if(profileToRemove == currentProfileLabel->text()){
564 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok); 564 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok);
565 return; 565 return;
566 566
567 } 567 }
568 568
569 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){ 569 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){
570 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), "")); 570 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), ""));
571 profilesList->clear(); 571 profilesList->clear();
572 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 572 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
573 profilesList->insertItem((*it)); 573 profilesList->insertItem((*it));
574 574
575 // Remove any interface settings and mappings. 575 // Remove any interface settings and mappings.
576 Interfaces interfaces; 576 Interfaces interfaces;
577 // Go through them one by one 577 // Go through them one by one
578 QMap<Interface*, QListViewItem*>::Iterator it; 578 QMap<Interface*, QListViewItem*>::Iterator it;
579 for( it = items.begin(); it != items.end(); ++it ){ 579 for( it = items.begin(); it != items.end(); ++it ){
580 QString interfaceName = it.key()->getInterfaceName(); 580 QString interfaceName = it.key()->getInterfaceName();
581 qDebug(interfaceName.latin1()); 581 qDebug(interfaceName.latin1());
582 if(interfaces.setInterface(interfaceName + "_" + profileToRemove)){ 582 if(interfaces.setInterface(interfaceName + "_" + profileToRemove)){
583 interfaces.removeInterface(); 583 interfaces.removeInterface();
584 if(interfaces.setMapping(interfaceName)){ 584 if(interfaces.setMapping(interfaceName)){
585 if(profilesList->count() == 1) 585 if(profilesList->count() == 1)
586 interfaces.removeMapping(); 586 interfaces.removeMapping();
587 else{ 587 else{
588 interfaces.removeMap("map", interfaceName + "_" + profileToRemove); 588 interfaces.removeMap("map", interfaceName + "_" + profileToRemove);
589 } 589 }
590 } 590 }
591 interfaces.write(); 591 interfaces.write();
592 break; 592 break;
593 } 593 }
594 } 594 }
595 } 595 }
596} 596}
597 597
598/** 598/**
599 * A new profile has been selected, change. 599 * A new profile has been selected, change.
600 * @param newProfile the new profile. 600 * @param newProfile the new profile.
601 */ 601 */
602void MainWindowImp::changeProfile(){ 602void MainWindowImp::changeProfile(){
603 if(profilesList->currentItem() == -1){ 603 if(profilesList->currentItem() == -1){
604 QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok); 604 QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok);
605 return; 605 return;
606 } 606 }
607 QString newProfile = profilesList->text(profilesList->currentItem()); 607 QString newProfile = profilesList->text(profilesList->currentItem());
608 if(newProfile != currentProfileLabel->text()){ 608 if(newProfile != currentProfileLabel->text()){
609 currentProfileLabel->setText(newProfile); 609 currentProfileLabel->setText(newProfile);
610 QFile::remove(scheme); 610 QFile::remove(scheme);
611 QFile file(scheme); 611 QFile file(scheme);
612 if ( file.open(IO_ReadWrite) ) { 612 if ( file.open(IO_ReadWrite) ) {
613 QTextStream stream( &file ); 613 QTextStream stream( &file );
614 stream << QString("SCHEME=%1").arg(newProfile); 614 stream << QString("SCHEME=%1").arg(newProfile);
615 file.close(); 615 file.close();
616 } 616 }
617 // restart all up devices? 617 // restart all up devices?
618 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){ 618 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){
619 // Go through them one by one 619 // Go through them one by one
620 QMap<Interface*, QListViewItem*>::Iterator it; 620 QMap<Interface*, QListViewItem*>::Iterator it;
621 for( it = items.begin(); it != items.end(); ++it ){ 621 for( it = items.begin(); it != items.end(); ++it ){
622 if(it.key()->getStatus() == true) 622 if(it.key()->getStatus() == true)
623 it.key()->restart(); 623 it.key()->restart();
624 } 624 }
625 } 625 }
626 } 626 }
627 // TODO change the profile in the modules 627 // TODO change the profile in the modules
628} 628}
629 629
630 630
631void MainWindowImp::makeChannel() 631void MainWindowImp::makeChannel()
632{ 632{
633 channel = new QCopChannel( "QPE/Application/networksettings", this ); 633 channel = new QCopChannel( "QPE/Application/networksettings", this );
634 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 634 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
635 this, SLOT(receive(const QCString&, const QByteArray&)) ); 635 this, SLOT(receive(const QCString&, const QByteArray&)) );
636} 636}
637 637
638void MainWindowImp::receive(const QCString &msg, const QByteArray &arg) 638void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
639{ 639{
640 bool found = false; 640 bool found = false;
641 qDebug("MainWindowImp::receive QCop msg >"+msg+"<"); 641 qDebug("MainWindowImp::receive QCop msg >"+msg+"<");
642 642
643 QString dest = msg.left(msg.find("(")); 643 QString dest = msg.left(msg.find("("));
644 QCString param = msg.right(msg.length() - msg.find("(") - 1); 644 QCString param = msg.right(msg.length() - msg.find("(") - 1);
645 param = param.left( param.length() - 1 ); 645 param = param.left( param.length() - 1 );
646 qDebug("dest >%s< param >"+param+"<",dest.latin1()); 646 qDebug("dest >%s< param >"+param+"<",dest.latin1());
647 647
648// if (param.contains("QString,QString,QString")) { 648// if (param.contains("QString,QString,QString")) {
649// QDataStream stream(arg,IO_ReadOnly); 649// QDataStream stream(arg,IO_ReadOnly);
650// QString arg1, arg2, arg3; 650// QString arg1, arg2, arg3;
651// stream >> arg1 >> arg2 >> arg3 ; 651// stream >> arg1 >> arg2 >> arg3 ;
652// qDebug("args: >%s< >%s< >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1()); 652// qDebug("args: >%s< >%s< >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1());
653// } 653// }
654 654
655 QMap<Module*, QLibrary*>::Iterator it; 655 QMap<Module*, QLibrary*>::Iterator it;
656 for( it = libraries.begin(); it != libraries.end(); ++it ){ 656 for( it = libraries.begin(); it != libraries.end(); ++it ){
657 qDebug("plugin >%s<", it.key()->type().latin1() ); 657 qDebug("plugin >%s<", it.key()->type().latin1() );
658 if(it.key()->type() == dest){ 658 if(it.key()->type() == dest){
659 it.key()->receive( param, arg ); 659 it.key()->receive( param, arg );
660 found = true; 660 found = true;
661 } 661 }
662 } 662 }
663 663
664 664
665 if (!found) qDebug("Huh what do ya want"); 665 if (found) QPEApplication::setKeepRunning();
666 else qDebug("Huh what do ya want");
666} 667}
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp
index b988822..cdafb4d 100644
--- a/noncore/settings/networksettings/wlan/wlanimp2.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp
@@ -1,269 +1,269 @@
1#include "wlanimp2.h" 1#include "wlanimp2.h"
2#include "keyedit.h" 2#include "keyedit.h"
3#include "interfacesetupimp.h" 3#include "interfacesetupimp.h"
4 4
5#include <qfile.h> 5#include <qfile.h>
6#include <qdir.h> 6#include <qdir.h>
7#include <qtextstream.h> 7#include <qtextstream.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qlabel.h> 10#include <qlabel.h>
11#include <qspinbox.h> 11#include <qspinbox.h>
12#include <qradiobutton.h> 12#include <qradiobutton.h>
13#include <qcheckbox.h> 13#include <qcheckbox.h>
14#include <qtabwidget.h> 14#include <qtabwidget.h>
15#include <qcombobox.h> 15#include <qcombobox.h>
16 16
17#ifdef QWS 17#ifdef QWS
18 #include <opie/oprocess.h> 18 #include <opie/oprocess.h>
19#else 19#else
20 #define OProcess KProcess 20 #define OProcess KProcess
21 #include <kprocess.h> 21 #include <kprocess.h>
22#endif 22#endif
23 23
24#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts" 24#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts"
25#define PREUP "/etc/netwrok/if-pre-up.d/wireless-tools" 25#define PREUP "/etc/netwrok/if-pre-up.d/wireless-tools"
26 26
27/** 27/**
28 * Constructor, read in the wireless.opts file for parsing later. 28 * Constructor, read in the wireless.opts file for parsing later.
29 */ 29 */
30WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), currentProfile("*"), interface(i) { 30WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), currentProfile("*"), interface(i) {
31 interfaces = new Interfaces; 31 interfaces = new Interfaces();
32 interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces); 32 interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces);
33 tabWidget->insertTab(interfaceSetup, "TCP/IP"); 33 tabWidget->insertTab(interfaceSetup, "TCP/IP");
34 34
35 // Check sanity - the existance of the wireless-tools if-pre-up script 35 // Check sanity - the existance of the wireless-tools if-pre-up script
36 QFile file(QString(PREUP)); 36 QFile file(QString(PREUP));
37 if (file.exists()) { 37 if (file.exists()) {
38 qWarning(QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools")); 38 qWarning(QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools"));
39 } 39 }
40} 40}
41 41
42WLANImp::~WLANImp() { 42WLANImp::~WLANImp() {
43//FIXME: delete interfaces; 43//FIXME: delete interfaces;
44} 44}
45 45
46/** 46/**
47 * Change the profile for both wireless settings and network settings. 47 * Change the profile for both wireless settings and network settings.
48 */ 48 */
49void WLANImp::setProfile(const QString &profile){ 49void WLANImp::setProfile(const QString &profile){
50 interfaceSetup->setProfile(profile); 50 interfaceSetup->setProfile(profile);
51 parseOpts(); 51 parseOpts();
52} 52}
53 53
54void WLANImp::parseOpts() { 54void WLANImp::parseOpts() {
55 bool error; 55 bool error;
56 QString opt; 56 QString opt;
57 57
58 if (! interfaces->isInterfaceSet()) 58 if (! interfaces->isInterfaceSet())
59 return; 59 return;
60 60
61 61
62 opt = interfaces->getInterfaceOption("wireless_essid", error); 62 opt = interfaces->getInterfaceOption("wireless_essid", error);
63 if(opt == "any" || opt == "off" || opt.isNull()){ 63 if(opt == "any" || opt == "off" || opt.isNull()){
64 essid->setEditText("any"); 64 essid->setEditText("any");
65 } else { 65 } else {
66 essid->setEditText(opt); 66 essid->setEditText(opt);
67 } 67 }
68 68
69 opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); 69 opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace();
70 if (opt == "Auto") { 70 if (opt == "Auto") {
71 mode->setCurrentItem(0); 71 mode->setCurrentItem(0);
72 } else if (opt == "Ad-Hoc") { 72 } else if (opt == "Ad-Hoc") {
73 mode->setCurrentItem(2); 73 mode->setCurrentItem(2);
74 } else { 74 } else {
75 // Managed/Infrastructure mode 75 // Managed/Infrastructure mode
76 mode->setCurrentItem(1); 76 mode->setCurrentItem(1);
77 } 77 }
78 78
79 opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); 79 opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace();
80 if (! opt.isNull()) { 80 if (! opt.isNull()) {
81 specifyAp->setChecked(true); 81 specifyAp->setChecked(true);
82 macEdit->setText(opt); 82 macEdit->setText(opt);
83 } 83 }
84 84
85 opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); 85 opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace();
86 if (! opt.isNull()) { 86 if (! opt.isNull()) {
87 specifyChan->setChecked(true); 87 specifyChan->setChecked(true);
88 networkChannel->setValue(opt.toInt()); 88 networkChannel->setValue(opt.toInt());
89 } 89 }
90 90
91 opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); 91 opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace();
92 if (opt.isNull()) 92 if (opt.isNull())
93 opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); 93 opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace();
94 parseKeyStr(opt); 94 parseKeyStr(opt);
95} 95}
96 96
97void WLANImp::parseKeyStr(QString keystr) { 97void WLANImp::parseKeyStr(QString keystr) {
98 int loc = 0; 98 int loc = 0;
99 int index = 1; 99 int index = 1;
100 QString key; 100 QString key;
101 QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); 101 QStringList keys = QStringList::split(QRegExp("\\s+"), keystr);
102 int enc = -1; // encryption state 102 int enc = -1; // encryption state
103 103
104 for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { 104 for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) {
105 if ((*it).left(3) == "off") { 105 if ((*it).left(3) == "off") {
106 // encryption disabled 106 // encryption disabled
107 enc = 0; 107 enc = 0;
108 } else if ((*it).left(2) == "on") { 108 } else if ((*it).left(2) == "on") {
109 // encryption enabled 109 // encryption enabled
110 enc = 1; 110 enc = 1;
111 } else if ((*it).left(4) == "open") { 111 } else if ((*it).left(4) == "open") {
112 // open mode, accept non encrypted packets 112 // open mode, accept non encrypted packets
113 acceptNonEnc->setChecked(true); 113 acceptNonEnc->setChecked(true);
114 } else if ((*it).left(10) == "restricted") { 114 } else if ((*it).left(10) == "restricted") {
115 // restricted mode, only accept encrypted packets 115 // restricted mode, only accept encrypted packets
116 rejectNonEnc->setChecked(true); 116 rejectNonEnc->setChecked(true);
117 } else if ((*it).left(3) == "key") { 117 } else if ((*it).left(3) == "key") {
118 // new set of options 118 // new set of options
119 } else if ((*it).left(1) == "[") { 119 } else if ((*it).left(1) == "[") {
120 index = (*it).mid(1, 1).toInt(); 120 index = (*it).mid(1, 1).toInt();
121 // switch current key to index 121 // switch current key to index
122 switch (index) { 122 switch (index) {
123 case 1: 123 case 1:
124 keyRadio0->setChecked(true); 124 keyRadio0->setChecked(true);
125 break; 125 break;
126 case 2: 126 case 2:
127 keyRadio1->setChecked(true); 127 keyRadio1->setChecked(true);
128 break; 128 break;
129 case 3: 129 case 3:
130 keyRadio2->setChecked(true); 130 keyRadio2->setChecked(true);
131 break; 131 break;
132 case 4: 132 case 4:
133 keyRadio3->setChecked(true); 133 keyRadio3->setChecked(true);
134 break; 134 break;
135 } 135 }
136 } else { 136 } else {
137 // key 137 // key
138 key = (*it); 138 key = (*it);
139 } 139 }
140 if (! key.isNull()) { 140 if (! key.isNull()) {
141 if (enc == -1) 141 if (enc == -1)
142 enc = 1; 142 enc = 1;
143 QStringList::Iterator next = ++it; 143 QStringList::Iterator next = ++it;
144 if (it == keys.end()) { 144 if (it == keys.end()) {
145 break; 145 break;
146 } 146 }
147 if ((*(next)).left(1) == "[") { 147 if ((*(next)).left(1) == "[") {
148 // set key at index 148 // set key at index
149 index = (*(next)).mid(1, 1).toInt(); 149 index = (*(next)).mid(1, 1).toInt();
150 } else { 150 } else {
151 index = 1; 151 index = 1;
152 } 152 }
153 switch (index) { 153 switch (index) {
154 case 1: 154 case 1:
155 keyLineEdit0->setText(key); 155 keyLineEdit0->setText(key);
156 break; 156 break;
157 case 2: 157 case 2:
158 keyLineEdit1->setText(key); 158 keyLineEdit1->setText(key);
159 break; 159 break;
160 case 3: 160 case 3:
161 keyLineEdit2->setText(key); 161 keyLineEdit2->setText(key);
162 break; 162 break;
163 case 4: 163 case 4:
164 keyLineEdit3->setText(key); 164 keyLineEdit3->setText(key);
165 break; 165 break;
166 } 166 }
167 key = QString::null; 167 key = QString::null;
168 } 168 }
169 } 169 }
170 if (enc == 1) { 170 if (enc == 1) {
171 wepEnabled->setChecked(true); 171 wepEnabled->setChecked(true);
172 } else { 172 } else {
173 wepEnabled->setChecked(false); 173 wepEnabled->setChecked(false);
174 } 174 }
175} 175}
176 176
177/** 177/**
178 * Check to see if the current config is valid 178 * Check to see if the current config is valid
179 * Save interfaces 179 * Save interfaces
180 */ 180 */
181void WLANImp::accept() { 181void WLANImp::accept() {
182 if (wepEnabled->isChecked()) { 182 if (wepEnabled->isChecked()) {
183 if ((keyRadio0->isChecked() && keyLineEdit0->text().isEmpty()) || 183 if ((keyRadio0->isChecked() && keyLineEdit0->text().isEmpty()) ||
184 (keyRadio1->isChecked() && keyLineEdit1->text().isEmpty()) || 184 (keyRadio1->isChecked() && keyLineEdit1->text().isEmpty()) ||
185 (keyRadio2->isChecked() && keyLineEdit2->text().isEmpty()) || 185 (keyRadio2->isChecked() && keyLineEdit2->text().isEmpty()) ||
186 (keyRadio3->isChecked() && keyLineEdit3->text().isEmpty())) { 186 (keyRadio3->isChecked() && keyLineEdit3->text().isEmpty())) {
187 QMessageBox::information(this, "Error", "Please enter a WEP key.", QMessageBox::Ok); 187 QMessageBox::information(this, "Error", "Please enter a WEP key.", QMessageBox::Ok);
188 return; 188 return;
189 } 189 }
190 } 190 }
191 191
192 if (essid->currentText().isEmpty()) { 192 if (essid->currentText().isEmpty()) {
193 QMessageBox::information(this, "Error", "Please select/enter an ESSID.", QMessageBox::Ok); 193 QMessageBox::information(this, "Error", "Please select/enter an ESSID.", QMessageBox::Ok);
194 return; 194 return;
195 } 195 }
196 196
197 if (specifyAp->isChecked() && macEdit->text().isEmpty()) { 197 if (specifyAp->isChecked() && macEdit->text().isEmpty()) {
198 QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok); 198 QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok);
199 return; 199 return;
200 } 200 }
201 201
202 // Try to save the interfaces settings. 202 // Try to save the interfaces settings.
203 writeOpts(); 203 writeOpts();
204 204
205 // Close out the dialog 205 // Close out the dialog
206 QDialog::accept(); 206 QDialog::accept();
207} 207}
208 208
209void WLANImp::writeOpts() { 209void WLANImp::writeOpts() {
210 bool error = false; 210 bool error = false;
211 211
212 interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText()); 212 interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText());
213 interfaces->setInterfaceOption(QString("wireless_essid"), essid->currentText()); 213 interfaces->setInterfaceOption(QString("wireless_essid"), essid->currentText());
214 214
215 if (specifyAp->isChecked()) { 215 if (specifyAp->isChecked()) {
216 interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text()); 216 interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text());
217 } else { 217 } else {
218 interfaces->removeInterfaceOption(QString("wireless_ap")); 218 interfaces->removeInterfaceOption(QString("wireless_ap"));
219 } 219 }
220 220
221 if (specifyChan->isChecked()) { 221 if (specifyChan->isChecked()) {
222 interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text()); 222 interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text());
223 } else { 223 } else {
224 interfaces->removeInterfaceOption(QString("wireless_channel")); 224 interfaces->removeInterfaceOption(QString("wireless_channel"));
225 } 225 }
226 226
227 if (wepEnabled->isChecked()) { 227 if (wepEnabled->isChecked()) {
228 QStringList keyList; 228 QStringList keyList;
229 229
230 if (! keyLineEdit0->text().isNull()) { 230 if (! keyLineEdit0->text().isNull()) {
231 keyList += keyLineEdit0->text(); 231 keyList += keyLineEdit0->text();
232 keyList += "[1]"; 232 keyList += "[1]";
233 } else if (! keyLineEdit1->text().isNull()) { 233 } else if (! keyLineEdit1->text().isNull()) {
234 keyList += keyLineEdit1->text(); 234 keyList += keyLineEdit1->text();
235 keyList += "[2]"; 235 keyList += "[2]";
236 } else if (! keyLineEdit2->text().isNull()) { 236 } else if (! keyLineEdit2->text().isNull()) {
237 keyList += keyLineEdit2->text(); 237 keyList += keyLineEdit2->text();
238 keyList += "[3]"; 238 keyList += "[3]";
239 } else if (! keyLineEdit3->text().isNull()) { 239 } else if (! keyLineEdit3->text().isNull()) {
240 keyList += keyLineEdit3->text(); 240 keyList += keyLineEdit3->text();
241 keyList += "[4]"; 241 keyList += "[4]";
242 } 242 }
243 if (acceptNonEnc->isChecked()) { 243 if (acceptNonEnc->isChecked()) {
244 keyList += "open"; 244 keyList += "open";
245 } else { 245 } else {
246 keyList += "restricted"; 246 keyList += "restricted";
247 } 247 }
248 248
249 keyList += "key"; 249 keyList += "key";
250 if (keyRadio0->isChecked()) { 250 if (keyRadio0->isChecked()) {
251 keyList += "[1]"; 251 keyList += "[1]";
252 } else if (keyRadio1->isChecked()) { 252 } else if (keyRadio1->isChecked()) {
253 keyList += "[2]"; 253 keyList += "[2]";
254 } else if (keyRadio2->isChecked()) { 254 } else if (keyRadio2->isChecked()) {
255 keyList += "[3]"; 255 keyList += "[3]";
256 } else if (keyRadio3->isChecked()) { 256 } else if (keyRadio3->isChecked()) {
257 keyList += "[4]"; 257 keyList += "[4]";
258 } 258 }
259 interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); 259 interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" ")));
260 } else { 260 } else {
261 interfaces->removeInterfaceOption(QString("wireless_key")); 261 interfaces->removeInterfaceOption(QString("wireless_key"));
262 } 262 }
263 interfaces->removeInterfaceOption(QString("wireless_enc")); 263 interfaces->removeInterfaceOption(QString("wireless_enc"));
264 264
265 if(!interfaceSetup->saveChanges()) 265 if(!interfaceSetup->saveChanges())
266 return; 266 return;
267 267
268 QDialog::accept(); 268 QDialog::accept();
269} 269}
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp
index e6f082c..bc467bb 100644
--- a/noncore/settings/networksettings/wlan/wlanmodule.cpp
+++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp
@@ -1,187 +1,209 @@
1#include "wlanmodule.h" 1#include "wlanmodule.h"
2#include "wlanimp.h" 2#include "wlanimp.h"
3#include "infoimp.h" 3#include "infoimp.h"
4#include "wextensions.h" 4#include "wextensions.h"
5#include "interfaceinformationimp.h" 5#include "interfaceinformationimp.h"
6 6
7#include <qcheckbox.h>
8#include <qcombobox.h>
7#include <qlabel.h> 9#include <qlabel.h>
8#include <qprogressbar.h> 10#include <qprogressbar.h>
11#include <qspinbox.h>
9#include <qtabwidget.h> 12#include <qtabwidget.h>
10 13
11 14
12 15
13 16
14/** 17/**
15 * Constructor, find all of the possible interfaces 18 * Constructor, find all of the possible interfaces
16 */ 19 */
17WLANModule::WLANModule() : Module() { 20WLANModule::WLANModule()
21 : Module(),
22 wlanconfigWiget(0)
23{
18} 24}
19 25
20/** 26/**
21 * Delete any interfaces that we own. 27 * Delete any interfaces that we own.
22 */ 28 */
23WLANModule::~WLANModule(){ 29WLANModule::~WLANModule(){
24 Interface *i; 30 Interface *i;
25 for ( i=list.first(); i != 0; i=list.next() ) 31 for ( i=list.first(); i != 0; i=list.next() )
26 delete i; 32 delete i;
27 33
28} 34}
29 35
30/** 36/**
31 * Change the current profile 37 * Change the current profile
32 */ 38 */
33void WLANModule::setProfile(const QString &newProfile){ 39void WLANModule::setProfile(const QString &newProfile){
34 profile = newProfile; 40 profile = newProfile;
35} 41}
36 42
37/** 43/**
38 * get the icon name for this device. 44 * get the icon name for this device.
39 * @param Interface* can be used in determining the icon. 45 * @param Interface* can be used in determining the icon.
40 * @return QString the icon name (minus .png, .gif etc) 46 * @return QString the icon name (minus .png, .gif etc)
41 */ 47 */
42QString WLANModule::getPixmapName(Interface* ){ 48QString WLANModule::getPixmapName(Interface* ){
43 return "wlan"; 49 return "wlan";
44} 50}
45 51
46/** 52/**
47 * Check to see if the interface i is owned by this module. 53 * Check to see if the interface i is owned by this module.
48 * @param Interface* interface to check against 54 * @param Interface* interface to check against
49 * @return bool true if i is owned by this module, false otherwise. 55 * @return bool true if i is owned by this module, false otherwise.
50 */ 56 */
51bool WLANModule::isOwner(Interface *i){ 57bool WLANModule::isOwner(Interface *i){
52 WExtensions we(i->getInterfaceName()); 58 WExtensions we(i->getInterfaceName());
53 if(!we.doesHaveWirelessExtensions()) 59 if(!we.doesHaveWirelessExtensions())
54 return false; 60 return false;
55 61
56 i->setHardwareName("802.11b"); 62 i->setHardwareName("802.11b");
57 list.append(i); 63 list.append(i);
58 return true; 64 return true;
59} 65}
60 66
61/** 67/**
62 * Create, and return the WLANConfigure Module 68 * Create, and return the WLANConfigure Module
63 * @return QWidget* pointer to this modules configure. 69 * @return QWidget* pointer to this modules configure.
64 */ 70 */
65QWidget *WLANModule::configure(Interface *i){ 71QWidget *WLANModule::configure(Interface *i){
66 WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, false, Qt::WDestructiveClose); 72 WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, false, Qt::WDestructiveClose);
67 wlanconfig->setProfile(profile); 73 wlanconfig->setProfile(profile);
68 return wlanconfig; 74 return wlanconfig;
69} 75}
70 76
71/** 77/**
72 * Create, and return the Information Module 78 * Create, and return the Information Module
73 * @return QWidget* pointer to this modules info. 79 * @return QWidget* pointer to this modules info.
74 */ 80 */
75QWidget *WLANModule::information(Interface *i){ 81QWidget *WLANModule::information(Interface *i){
76 WExtensions we(i->getInterfaceName()); 82 WExtensions we(i->getInterfaceName());
77 if(!we.doesHaveWirelessExtensions()) 83 if(!we.doesHaveWirelessExtensions())
78 return NULL; 84 return NULL;
79 85
80 return getInfo( i ); 86 return getInfo( i );
81} 87}
82 88
83/** 89/**
84 * Get all active (up or down) interfaces 90 * Get all active (up or down) interfaces
85 * @return QList<Interface> A list of interfaces that exsist that havn't 91 * @return QList<Interface> A list of interfaces that exsist that havn't
86 * been called by isOwner() 92 * been called by isOwner()
87 */ 93 */
88QList<Interface> WLANModule::getInterfaces(){ 94QList<Interface> WLANModule::getInterfaces(){
89 return list; 95 return list;
90} 96}
91 97
92/** 98/**
93 * Attempt to add a new interface as defined by name 99 * Attempt to add a new interface as defined by name
94 * @param name the name of the type of interface that should be created given 100 * @param name the name of the type of interface that should be created given
95 * by possibleNewInterfaces(); 101 * by possibleNewInterfaces();
96 * @return Interface* NULL if it was unable to be created. 102 * @return Interface* NULL if it was unable to be created.
97 */ 103 */
98Interface *WLANModule::addNewInterface(const QString &){ 104Interface *WLANModule::addNewInterface(const QString &){
99 // We can't add a 802.11 interface, either the hardware will be there 105 // We can't add a 802.11 interface, either the hardware will be there
100 // or it wont. 106 // or it wont.
101 return NULL; 107 return NULL;
102} 108}
103 109
104/** 110/**
105 * Attempts to remove the interface, doesn't delete i 111 * Attempts to remove the interface, doesn't delete i
106 * @return bool true if successfull, false otherwise. 112 * @return bool true if successfull, false otherwise.
107 */ 113 */
108bool WLANModule::remove(Interface*){ 114bool WLANModule::remove(Interface*){
109 // Can't remove a hardware device, you can stop it though. 115 // Can't remove a hardware device, you can stop it though.
110 return false; 116 return false;
111} 117}
112 118
113void WLANModule::receive(const QCString &param, const QByteArray &arg) 119void WLANModule::receive(const QCString &param, const QByteArray &arg)
114{ 120{
115 qDebug("WLANModule::receive "+param); 121 qDebug("WLANModule::receive "+param);
116 QStringList params = QStringList::split(",",param); 122 QStringList params = QStringList::split(",",param);
117 int count = params.count(); 123 int count = params.count();
118 qDebug("got %i params", count ); 124 qDebug("WLANModule got %i params", count );
119 if (count < 2){ 125 if (count < 2){
120 qDebug("Erorr less than 2 parameter"); 126 qDebug("Erorr less than 2 parameter");
121 qDebug("RETURNING"); 127 qDebug("RETURNING");
122 return; 128 return;
123 } 129 }
124 130
125 QDataStream stream(arg,IO_ReadOnly); 131 QDataStream stream(arg,IO_ReadOnly);
126 QString interface; 132 QString interface;
127 QString action; 133 QString action;
128 134
129 stream >> interface; 135 stream >> interface;
130 stream >> action; 136 stream >> action;
131 qDebug("got interface %s and acion %s", interface.latin1(), action.latin1()); 137 qDebug("WLANModule got interface %s and acion %s", interface.latin1(), action.latin1());
132 // find interfaces 138 // find interfaces
133 Interface *ifa=0; 139 Interface *ifa=0;
134 for ( Interface *i=list.first(); i != 0; i=list.next() ){ 140 for ( Interface *i=list.first(); i != 0; i=list.next() ){
135 if (i->getInterfaceName() == interface){ 141 if (i->getInterfaceName() == interface){
136 qDebug("found interface %s",interface.latin1()); 142 qDebug("WLANModule found interface %s",interface.latin1());
137 ifa = i; 143 ifa = i;
138 } 144 }
139 } 145 }
140 146
141 if (ifa == 0){ 147 if (ifa == 0){
142 qFatal("Did not find %s",interface.latin1()); 148 qFatal("WLANModule Did not find %s",interface.latin1());
143 } 149 }
144 150
145 if (count == 2){ 151 if (count == 2){
146 // those should call the interface directly 152 // those should call the interface directly
147 QWidget *info = getInfo( ifa ); 153 QWidget *info = getInfo( ifa );
148 info->showMaximized(); 154 info->showMaximized();
149 155
150 if ( action.contains("start" ) ){ 156 if ( action.contains("start" ) ){
151 ifa->start(); 157 ifa->start();
152 } else if ( action.contains("restart" ) ){ 158 } else if ( action.contains("restart" ) ){
153 ifa->restart(); 159 ifa->restart();
154 } else if ( action.contains("stop" ) ){ 160 } else if ( action.contains("stop" ) ){
155 ifa->stop(); 161 ifa->stop();
156 }else if ( action.contains("refresh" ) ){ 162 }else if ( action.contains("refresh" ) ){
157 ifa->refresh(); 163 ifa->refresh();
158 } 164 }
159 }else if (count == 3){ 165 }else if (count == 3){
160 QString value; 166 QString value;
167 if (!wlanconfigWiget){
168 //FIXME: what if it got closed meanwhile?
169 wlanconfigWiget = (WLANImp*) configure(ifa);
170 }
171 wlanconfigWiget->showMaximized();
161 stream >> value; 172 stream >> value;
162 qDebug("setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); 173 qDebug("WLANModule is setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() );
163 if ( action.contains("ESSID") ){ 174 if ( action.contains("ESSID") ){
164 qDebug("Setting ESSID not yet impl"); 175 QComboBox *combo = wlanconfigWiget->essid;
176 bool found = false;
177 for ( int i = 0; i < combo->count(); i++)
178 if ( combo->text( i ) == value ){
179 combo->setCurrentItem( i );
180 found = true;
181 }
182 if (!found) combo->insertItem( value, 0 );
183 }else if ( action.contains("Mode") ){
184 QComboBox *combo = wlanconfigWiget->mode;
185 for ( int i = 0; i < combo->count(); i++)
186 if ( combo->text( i ) == value ){
187 combo->setCurrentItem( i );
188 }
189
165 }else if (action.contains("Channel")){ 190 }else if (action.contains("Channel")){
166 qDebug("Setting Channel not yet impl"); 191 wlanconfigWiget->specifyChan->setChecked( true );
192 wlanconfigWiget->networkChannel->setValue( value.toInt() );
167 }else 193 }else
168 qDebug("wlan plugin has no clue"); 194 qDebug("wlan plugin has no clue");
169 } 195 }
170 // if (param.contains("QString,QString,QString")) { 196
171// QDataStream stream(arg,IO_ReadOnly);
172// QString arg1, arg2, arg3;
173// stream >> arg1 >> arg2 >> arg3 ;
174// qDebug("interface >%s< setting >%s< value >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1());
175// }
176} 197}
177 198
178QWidget *WLANModule::getInfo( Interface *i) 199QWidget *WLANModule::getInfo( Interface *i)
179{ 200{
180 qDebug("WLANModule::getInfo start"); 201 qDebug("WLANModule::getInfo start");
181 WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); 202 WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose);
182 InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); 203 InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i);
183 info->tabWidget->insertTab(information, "TCP/IP", 0); 204 info->tabWidget->insertTab(information, "TCP/IP", 0);
184 205
185 qDebug("WLANModule::getInfo return"); 206 qDebug("WLANModule::getInfo return");
186 return info; 207 return info;
187} 208}
209
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.h b/noncore/settings/networksettings/wlan/wlanmodule.h
index 0963137..027ecec 100644
--- a/noncore/settings/networksettings/wlan/wlanmodule.h
+++ b/noncore/settings/networksettings/wlan/wlanmodule.h
@@ -1,49 +1,48 @@
1#ifndef WLAN_MODULE_H 1#ifndef WLAN_MODULE_H
2#define WLAN_MODULE_H 2#define WLAN_MODULE_H
3 3
4#include "module.h" 4#include "module.h"
5 5
6//class WlanInfoImp; 6class WLANImp;
7 7
8class WLANModule : Module{ 8class WLANModule : Module{
9 9
10signals: 10signals:
11 void updateInterface(Interface *i); 11 void updateInterface(Interface *i);
12 12
13public: 13public:
14 WLANModule(); 14 WLANModule();
15 ~WLANModule(); 15 ~WLANModule();
16 16
17 17
18 virtual const QString type() {return "wlan";}; 18 virtual const QString type() {return "wlan";};
19 void setProfile(const QString &newProfile); 19 void setProfile(const QString &newProfile);
20 bool isOwner(Interface *); 20 bool isOwner(Interface *);
21 QWidget *configure(Interface *i); 21 QWidget *configure(Interface *i);
22 QWidget *information(Interface *i); 22 QWidget *information(Interface *i);
23 QList<Interface> getInterfaces(); 23 QList<Interface> getInterfaces();
24 void possibleNewInterfaces(QMap<QString, QString> &){}; 24 void possibleNewInterfaces(QMap<QString, QString> &){};
25 Interface *addNewInterface(const QString &name); 25 Interface *addNewInterface(const QString &name);
26 bool remove(Interface* i); 26 bool remove(Interface* i);
27 QString getPixmapName(Interface* i); 27 QString getPixmapName(Interface* i);
28 virtual void receive(const QCString&, const QByteArray&); 28 virtual void receive(const QCString&, const QByteArray&);
29 29
30private: 30private:
31 QWidget *getInfo(Interface*); 31 QWidget *getInfo(Interface*);
32 32 WLANImp *wlanconfigWiget;
33 QList<Interface> list; 33 QList<Interface> list;
34 QString profile; 34 QString profile;
35 // WlanInfoImp *info; 35
36 // Interface *iface;
37}; 36};
38 37
39extern "C" 38extern "C"
40{ 39{
41 void* create_plugin() { 40 void* create_plugin() {
42 return new WLANModule(); 41 return new WLANModule();
43 } 42 }
44}; 43};
45 44
46#endif 45#endif
47 46
48// wlanmodule.h 47// wlanmodule.h
49 48