summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindow/mainwindowimp.cpp20
-rw-r--r--noncore/settings/networksettings/ppp/edit.cpp10
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp4
3 files changed, 15 insertions, 19 deletions
diff --git a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
index a7b0bdc..650e634 100644
--- a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp
@@ -1,209 +1,210 @@
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 <opie2/odebug.h>
11#include <opie2/oprocess.h> 11#include <opie2/oprocess.h>
12#include <opie2/oresource.h>
13
12#include <qpe/applnk.h> 14#include <qpe/applnk.h>
13#include <qpe/qcopenvelope_qws.h> 15#include <qpe/qcopenvelope_qws.h>
14#include <qpe/qpeapplication.h> 16#include <qpe/qpeapplication.h>
15#include <qpe/config.h> 17#include <qpe/config.h>
16#include <qpe/qlibrary.h> 18#include <qpe/qlibrary.h>
17#include <qpe/resource.h>
18 19
19/* QT */ 20/* QT */
20#include <qpushbutton.h> 21#include <qpushbutton.h>
21#include <qlistbox.h> 22#include <qlistbox.h>
22#include <qlineedit.h> 23#include <qlineedit.h>
23#include <qlistview.h> 24#include <qlistview.h>
24#include <qheader.h> 25#include <qheader.h>
25#include <qlabel.h> 26#include <qlabel.h>
26#include <qtabwidget.h> // in order to disable the profiles tab 27#include <qtabwidget.h> // in order to disable the profiles tab
27#include <qmessagebox.h> 28#include <qmessagebox.h>
28#include <qtextstream.h> 29#include <qtextstream.h>
29#include <qregexp.h> 30#include <qregexp.h>
30 31
31 32
32#if QT_VERSION < 0x030000 33#if QT_VERSION < 0x030000
33#include <qlist.h> 34#include <qlist.h>
34#else 35#else
35#include <qptrlist.h> 36#include <qptrlist.h>
36#endif 37#endif
37#include <qdir.h> 38#include <qdir.h>
38#include <qfile.h> 39#include <qfile.h>
39#include <qtextstream.h> 40#include <qtextstream.h>
40#include <qregexp.h> 41#include <qregexp.h>
41 42
42/* STD */ 43/* STD */
43#include <net/if.h> 44#include <net/if.h>
44#include <sys/ioctl.h> 45#include <sys/ioctl.h>
45#include <sys/socket.h> 46#include <sys/socket.h>
46 47
47#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" 48#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
48#define _PROCNETDEV "/proc/net/dev" 49#define _PROCNETDEV "/proc/net/dev"
49 50
50// is this always right? 51// is this always right?
51#define _HOSTFILE "/etc/hostname" 52#define _HOSTFILE "/etc/hostname"
52#define _IRDANAME "/proc/sys/net/irda/devname" 53#define _IRDANAME "/proc/sys/net/irda/devname"
53 54
54using namespace Opie::Core; 55using namespace Opie::Core;
55 56
56MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME) 57MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME)
57{ 58{
58 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 59 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
59 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 60 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
60 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 61 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
61 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 62 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
62 63
63 //remove tab with no function 64 //remove tab with no function
64 tabWidget->removePage( tab ); 65 tabWidget->removePage( tab );
65 66
66 // Load connections. 67 // Load connections.
67 // /usr/local/kde/lib/libinterfaces.la 68 // /usr/local/kde/lib/libinterfaces.la
68 loadModules(QPEApplication::qpeDir() + "plugins/networksettings"); 69 loadModules(QPEApplication::qpeDir() + "plugins/networksettings");
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 initHostname(); 135 initHostname();
135} 136}
136 137
137/** 138/**
138 * Deconstructor. Save profiles. Delete loaded libraries. 139 * Deconstructor. Save profiles. Delete loaded libraries.
139 */ 140 */
140MainWindowImp::~MainWindowImp() 141MainWindowImp::~MainWindowImp()
141{ 142{
142 // Save profiles. 143 // Save profiles.
143 Config cfg("NetworkSetup"); 144 Config cfg("NetworkSetup");
144 cfg.setGroup("General"); 145 cfg.setGroup("General");
145 cfg.writeEntry("Profiles", profiles.join(" ")); 146 cfg.writeEntry("Profiles", profiles.join(" "));
146 147
147 // Delete all interfaces that don't have owners. 148 // Delete all interfaces that don't have owners.
148 QMap<Interface*, QListViewItem*>::Iterator iIt; 149 QMap<Interface*, QListViewItem*>::Iterator iIt;
149 for( iIt = items.begin(); iIt != items.end(); ++iIt ) 150 for( iIt = items.begin(); iIt != items.end(); ++iIt )
150 { 151 {
151 if(iIt.key()->getModuleOwner() == NULL) 152 if(iIt.key()->getModuleOwner() == NULL)
152 delete iIt.key(); 153 delete iIt.key();
153 } 154 }
154 155
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} 165}
165 166
166/** 167/**
167 * Query the kernel for all of the interfaces. 168 * Query the kernel for all of the interfaces.
168 */ 169 */
169void MainWindowImp::getAllInterfaces() 170void MainWindowImp::getAllInterfaces()
170{ 171{
171 int sockfd = socket(PF_INET, SOCK_DGRAM, 0); 172 int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
172 if(sockfd == -1) 173 if(sockfd == -1)
173 return; 174 return;
174 175
175 struct ifreq ifr; 176 struct ifreq ifr;
176 QStringList ifaces; 177 QStringList ifaces;
177 QFile procFile(QString(_PROCNETDEV)); 178 QFile procFile(QString(_PROCNETDEV));
178 int result; 179 int result;
179 Interface *i; 180 Interface *i;
180 181
181 if (! procFile.exists()) 182 if (! procFile.exists())
182 { 183 {
183 struct ifreq ifrs[100]; 184 struct ifreq ifrs[100];
184 struct ifconf ifc; 185 struct ifconf ifc;
185 ifc.ifc_len = sizeof(ifrs); 186 ifc.ifc_len = sizeof(ifrs);
186 ifc.ifc_req = ifrs; 187 ifc.ifc_req = ifrs;
187 result = ioctl(sockfd, SIOCGIFCONF, &ifc); 188 result = ioctl(sockfd, SIOCGIFCONF, &ifc);
188 189
189 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) 190 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++)
190 { 191 {
191 struct ifreq *pifr = &ifrs[i]; 192 struct ifreq *pifr = &ifrs[i];
192 if ( !QString( pifr->ifr_name ).startsWith( "wifi" ) ) ifaces += pifr->ifr_name; 193 if ( !QString( pifr->ifr_name ).startsWith( "wifi" ) ) ifaces += pifr->ifr_name;
193 else odebug << "ignoring hostap control interface " << pifr->ifr_name << oendl; 194 else odebug << "ignoring hostap control interface " << pifr->ifr_name << oendl;
194 } 195 }
195 } 196 }
196 else 197 else
197 { 198 {
198 procFile.open(IO_ReadOnly); 199 procFile.open(IO_ReadOnly);
199 QString line; 200 QString line;
200 QTextStream procTs(&procFile); 201 QTextStream procTs(&procFile);
201 int loc = -1; 202 int loc = -1;
202 203
203 procTs.readLine(); // eat a line 204 procTs.readLine(); // eat a line
204 procTs.readLine(); // eat a line 205 procTs.readLine(); // eat a line
205 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) 206 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null)
206 { 207 {
207 if((loc = line.find(":")) != -1) 208 if((loc = line.find(":")) != -1)
208 { 209 {
209 // ignore wifi* (hostap control interfaces) 210 // ignore wifi* (hostap control interfaces)
@@ -343,451 +344,442 @@ Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &
343#endif 344#endif
344 delete lib; 345 delete lib;
345 return 0; 346 return 0;
346 } 347 }
347 348
348 m_handledIfaces += object->handledInterfaceNames(); 349 m_handledIfaces += object->handledInterfaceNames();
349 // Store for deletion later 350 // Store for deletion later
350 libraries.insert(object, lib); 351 libraries.insert(object, lib);
351 return object; 352 return object;
352} 353}
353 354
354/** 355/**
355 * The Add button was clicked. Bring up the add dialog and if OK is hit 356 * The Add button was clicked. Bring up the add dialog and if OK is hit
356 * load the plugin and append it to the list 357 * load the plugin and append it to the list
357 */ 358 */
358void MainWindowImp::addClicked() 359void MainWindowImp::addClicked()
359{ 360{
360 QMap<Module*, QLibrary*>::Iterator it; 361 QMap<Module*, QLibrary*>::Iterator it;
361 QMap<QString, QString> list; 362 QMap<QString, QString> list;
362 QMap<QString, Module*> newInterfaceOwners; 363 QMap<QString, Module*> newInterfaceOwners;
363 364
364 for( it = libraries.begin(); it != libraries.end(); ++it ) 365 for( it = libraries.begin(); it != libraries.end(); ++it )
365 { 366 {
366 if(it.key()) 367 if(it.key())
367 { 368 {
368 (it.key())->possibleNewInterfaces(list); 369 (it.key())->possibleNewInterfaces(list);
369 } 370 }
370 } 371 }
371 // See if the list has anything that we can add. 372 // See if the list has anything that we can add.
372 if(list.count() == 0) 373 if(list.count() == 0)
373 { 374 {
374 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok); 375 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok);
375 return; 376 return;
376 } 377 }
377 AddConnectionImp addNewConnection(this, "AddConnectionImp", true); 378 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
378 addNewConnection.addConnections(list); 379 addNewConnection.addConnections(list);
379 if( QDialog::Accepted == QPEApplication::execDialog( &addNewConnection ) ) 380 if( QDialog::Accepted == QPEApplication::execDialog( &addNewConnection ) )
380 { 381 {
381 QListViewItem *item = addNewConnection.registeredServicesList->currentItem(); 382 QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
382 if(!item) 383 if(!item)
383 return; 384 return;
384 385
385 for( it = libraries.begin(); it != libraries.end(); ++it ) 386 for( it = libraries.begin(); it != libraries.end(); ++it )
386 { 387 {
387 if(it.key()) 388 if(it.key())
388 { 389 {
389 Interface *i = (it.key())->addNewInterface(item->text(0)); 390 Interface *i = (it.key())->addNewInterface(item->text(0));
390 if(i) 391 if(i)
391 { 392 {
392 odebug << "iface name " << i->getInterfaceName().latin1() << "" << oendl; 393 odebug << "iface name " << i->getInterfaceName().latin1() << "" << oendl;
393 interfaceNames.insert(i->getInterfaceName(), i); 394 interfaceNames.insert(i->getInterfaceName(), i);
394 updateInterface(i); 395 updateInterface(i);
395 } 396 }
396 } 397 }
397 } 398 }
398 } 399 }
399} 400}
400 401
401/** 402/**
402 * Prompt the user to see if they really want to do this. 403 * Prompt the user to see if they really want to do this.
403 * If they do then remove from the list and unload. 404 * If they do then remove from the list and unload.
404 */ 405 */
405void MainWindowImp::removeClicked() 406void MainWindowImp::removeClicked()
406{ 407{
407 QListViewItem *item = connectionList->currentItem(); 408 QListViewItem *item = connectionList->currentItem();
408 if(!item) 409 if(!item)
409 { 410 {
410 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok); 411 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
411 return; 412 return;
412 } 413 }
413 414
414 Interface *i = interfaceItems[item]; 415 Interface *i = interfaceItems[item];
415 if(i->getModuleOwner() == NULL) 416 if(i->getModuleOwner() == NULL)
416 { 417 {
417 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", QMessageBox::Ok); 418 QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", QMessageBox::Ok);
418 } 419 }
419 else 420 else
420 { 421 {
421 if(!i->getModuleOwner()->remove(i)) 422 if(!i->getModuleOwner()->remove(i))
422 QMessageBox::information(this, tr("Error"), tr("Unable to remove."), QMessageBox::Ok); 423 QMessageBox::information(this, tr("Error"), tr("Unable to remove."), QMessageBox::Ok);
423 else 424 else
424 { 425 {
425 delete item; 426 delete item;
426 // QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok); 427 // QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok);
427 } 428 }
428 } 429 }
429} 430}
430 431
431/** 432/**
432 * Pull up the configure about the currently selected interface. 433 * Pull up the configure about the currently selected interface.
433 * Report an error if no interface is selected. 434 * Report an error if no interface is selected.
434 * If the interface has a module owner then request its configure. 435 * If the interface has a module owner then request its configure.
435 */ 436 */
436void MainWindowImp::configureClicked() 437void MainWindowImp::configureClicked()
437{ 438{
438 QListViewItem *item = connectionList->currentItem(); 439 QListViewItem *item = connectionList->currentItem();
439 if(!item) 440 if(!item)
440 { 441 {
441 QMessageBox::information(this, tr("Sorry"),tr("Please select an interface first."), QMessageBox::Ok); 442 QMessageBox::information(this, tr("Sorry"),tr("Please select an interface first."), QMessageBox::Ok);
442 return; 443 return;
443 } 444 }
444 445
445 QString currentProfileText = currentProfileLabel->text(); 446 QString currentProfileText = currentProfileLabel->text();
446 if(currentProfileText.upper() == "ALL"); 447 if(currentProfileText.upper() == "ALL");
447 currentProfileText = ""; 448 currentProfileText = "";
448 449
449 Interface *i = interfaceItems[item]; 450 Interface *i = interfaceItems[item];
450 451
451 if(i->getModuleOwner()) 452 if(i->getModuleOwner())
452 { 453 {
453 QWidget *moduleConfigure = i->getModuleOwner()->configure(i); 454 QWidget *moduleConfigure = i->getModuleOwner()->configure(i);
454 if(moduleConfigure != NULL) 455 if(moduleConfigure != NULL)
455 { 456 {
456 i->getModuleOwner()->setProfile(currentProfileText); 457 i->getModuleOwner()->setProfile(currentProfileText);
457 QPEApplication::showWidget( moduleConfigure ); 458 QPEApplication::showWidget( moduleConfigure );
458 return; 459 return;
459 } 460 }
460 } 461 }
461 462
462 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WDestructiveClose | Qt::WStyle_ContextHelp ); 463 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WDestructiveClose | Qt::WStyle_ContextHelp );
463 configure->setProfile(currentProfileText); 464 configure->setProfile(currentProfileText);
464 QPEApplication::showDialog( configure ); 465 QPEApplication::showDialog( configure );
465} 466}
466 467
467/** 468/**
468 * Pull up the information about the currently selected interface. 469 * Pull up the information about the currently selected interface.
469 * Report an error if no interface is selected. 470 * Report an error if no interface is selected.
470 * If the interface has a module owner then request its configure. 471 * If the interface has a module owner then request its configure.
471 */ 472 */
472void MainWindowImp::informationClicked() 473void MainWindowImp::informationClicked()
473{ 474{
474 QListViewItem *item = connectionList->currentItem(); 475 QListViewItem *item = connectionList->currentItem();
475 if(!item) 476 if(!item)
476 { 477 {
477 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok); 478 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
478 return; 479 return;
479 } 480 }
480 481
481 Interface *i = interfaceItems[item]; 482 Interface *i = interfaceItems[item];
482 // if(!i->isAttached()){ 483 // if(!i->isAttached()){
483 // QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok); 484 // QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok);
484 // return; 485 // return;
485 // } 486 // }
486 487
487 if(i->getModuleOwner()) 488 if(i->getModuleOwner())
488 { 489 {
489 QWidget *moduleInformation = i->getModuleOwner()->information(i); 490 QWidget *moduleInformation = i->getModuleOwner()->information(i);
490 if(moduleInformation != NULL) 491 if(moduleInformation != NULL)
491 { 492 {
492 QPEApplication::showWidget( moduleInformation ); 493 QPEApplication::showWidget( moduleInformation );
493#ifdef DEBUG 494#ifdef DEBUG
494 odebug << "MainWindowImp::informationClicked:: Module owner has created, we showed." << oendl; 495 odebug << "MainWindowImp::informationClicked:: Module owner has created, we showed." << oendl;
495#endif 496#endif
496 return; 497 return;
497 } 498 }
498 } 499 }
499 InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog | Qt::WStyle_ContextHelp); 500 InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog | Qt::WStyle_ContextHelp);
500 QPEApplication::showWidget( information ); 501 QPEApplication::showWidget( information );
501} 502}
502 503
503/** 504/**
504 * Update this interface. If no QListViewItem exists create one. 505 * Update this interface. If no QListViewItem exists create one.
505 * @param Interface* pointer to the interface that needs to be updated. 506 * @param Interface* pointer to the interface that needs to be updated.
506 */ 507 */
507void MainWindowImp::updateInterface(Interface *i) 508void MainWindowImp::updateInterface(Interface *i)
508{ 509{
509 if(!advancedUserMode) 510 if(!advancedUserMode)
510 { 511 {
511 if(i->getInterfaceName() == "lo") 512 if(i->getInterfaceName() == "lo")
512 return; 513 return;
513 } 514 }
514 515
515 QListViewItem *item = NULL; 516 QListViewItem *item = NULL;
516 517
517 // Find the interface, making it if needed. 518 // Find the interface, making it if needed.
518 if(items.find(i) == items.end()) 519 if(items.find(i) == items.end())
519 { 520 {
520 item = new QListViewItem(connectionList, "", "", ""); 521 item = new QListViewItem(connectionList, "", "", "");
521 // See if you can't find a module owner for this interface 522 // See if you can't find a module owner for this interface
522 QMap<Module*, QLibrary*>::Iterator it; 523 QMap<Module*, QLibrary*>::Iterator it;
523 for( it = libraries.begin(); it != libraries.end(); ++it ) 524 for( it = libraries.begin(); it != libraries.end(); ++it )
524 { 525 {
525 if(it.key()->isOwner(i)) 526 if(it.key()->isOwner(i))
526 i->setModuleOwner(it.key()); 527 i->setModuleOwner(it.key());
527 } 528 }
528 items.insert(i, item); 529 items.insert(i, item);
529 interfaceItems.insert(item, i); 530 interfaceItems.insert(item, i);
530 } 531 }
531 else 532 else
532 item = items[i]; 533 item = items[i];
533 534
534 // Update the icons and information 535 // Update the icons and information
535#ifdef QWS 536 item->setPixmap( 0, Opie::Core::OResource::loadPixmap( i->getStatus() ? "up" : "down", Opie::Core::OResource::SmallIcon ) );
536 QPixmap pic;
537 pic.convertFromImage( Resource::loadImage( i->getStatus() ? "up": "down" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ) );
538 item->setPixmap(0, ( pic ));
539#else
540 item->setPixmap(0, (SmallIcon(i->getStatus() ? "up": "down")));
541#endif
542 537
543 QString typeName = "lan"; 538 QString typeName = "lan";
544 if(i->getInterfaceName() == "lo") 539 if(i->getInterfaceName() == "lo")
545 typeName = "lo"; 540 typeName = "lo";
546 if(i->getInterfaceName().contains("irda")) 541 if(i->getInterfaceName().contains("irda"))
547 typeName = "irda"; 542 typeName = "irda";
548 if(i->getInterfaceName().contains("wlan")) 543 if(i->getInterfaceName().contains("wlan"))
549 typeName = "wlan"; 544 typeName = "wlan";
550 if(i->getInterfaceName().contains("usb")) 545 if(i->getInterfaceName().contains("usb"))
551 typeName = "usb"; 546 typeName = "usb";
552 547
553 if(!i->isAttached()) 548 if(!i->isAttached())
554 typeName = "connect_no"; 549 typeName = "connect_no";
555 // Actually try to use the Module 550 // Actually try to use the Module
556 if(i->getModuleOwner() != NULL) 551 if(i->getModuleOwner() != NULL)
557 typeName = i->getModuleOwner()->getPixmapName(i); 552 typeName = i->getModuleOwner()->getPixmapName(i);
558 553
559#ifdef QWS 554 item->setPixmap( 1, ( Opie::Core::OResource::loadPixmap( "networksettings/" + typeName, Opie::Core::OResource::SmallIcon ) ) );
560 item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName))); 555
561#else
562 item->setPixmap(1, (SmallIcon(typeName)));
563#endif
564 item->setText(2, i->getHardwareName()); 556 item->setText(2, i->getHardwareName());
565 item->setText(3, QString("(%1)").arg(i->getInterfaceName())); 557 item->setText(3, QString("(%1)").arg(i->getInterfaceName()));
566 item->setText(4, (i->getStatus()) ? i->getIp() : QString("")); 558 item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
567} 559}
568 560
569void MainWindowImp::newProfileChanged(const QString& newText) 561void MainWindowImp::newProfileChanged(const QString& newText)
570{ 562{
571 if(newText.length() > 0) 563 if(newText.length() > 0)
572 newProfileButton->setEnabled(true); 564 newProfileButton->setEnabled(true);
573 else 565 else
574 newProfileButton->setEnabled(false); 566 newProfileButton->setEnabled(false);
575} 567}
576 568
577/** 569/**
578 * Adds a new profile to the list of profiles. 570 * Adds a new profile to the list of profiles.
579 * Don't add profiles that already exists. 571 * Don't add profiles that already exists.
580 * Appends to the list and QStringList 572 * Appends to the list and QStringList
581 */ 573 */
582void MainWindowImp::addProfile() 574void MainWindowImp::addProfile()
583{ 575{
584 QString newProfileName = newProfile->text(); 576 QString newProfileName = newProfile->text();
585 if(profiles.grep(newProfileName).count() > 0) 577 if(profiles.grep(newProfileName).count() > 0)
586 { 578 {
587 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok); 579 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok);
588 return; 580 return;
589 } 581 }
590 profiles.append(newProfileName); 582 profiles.append(newProfileName);
591 profilesList->insertItem(newProfileName); 583 profilesList->insertItem(newProfileName);
592} 584}
593 585
594/** 586/**
595 * Removes the currently selected profile in the combo. 587 * Removes the currently selected profile in the combo.
596 * Doesn't delete if there are less then 2 profiles. 588 * Doesn't delete if there are less then 2 profiles.
597 */ 589 */
598void MainWindowImp::removeProfile() 590void MainWindowImp::removeProfile()
599{ 591{
600 if(profilesList->count() <= 1) 592 if(profilesList->count() <= 1)
601 { 593 {
602 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok); 594 QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok);
603 return; 595 return;
604 } 596 }
605 QString profileToRemove = profilesList->currentText(); 597 QString profileToRemove = profilesList->currentText();
606 if(profileToRemove == "All") 598 if(profileToRemove == "All")
607 { 599 {
608 QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok); 600 QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok);
609 return; 601 return;
610 } 602 }
611 // Can't remove the curent profile 603 // Can't remove the curent profile
612 if(profileToRemove == currentProfileLabel->text()) 604 if(profileToRemove == currentProfileLabel->text())
613 { 605 {
614 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok); 606 QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok);
615 return; 607 return;
616 608
617 } 609 }
618 610
619 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) 611 if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
620 { 612 {
621 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), "")); 613 profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), ""));
622 profilesList->clear(); 614 profilesList->clear();
623 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 615 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
624 profilesList->insertItem((*it)); 616 profilesList->insertItem((*it));
625 617
626 // Remove any interface settings and mappings. 618 // Remove any interface settings and mappings.
627 Interfaces interfaces; 619 Interfaces interfaces;
628 // Go through them one by one 620 // Go through them one by one
629 QMap<Interface*, QListViewItem*>::Iterator it; 621 QMap<Interface*, QListViewItem*>::Iterator it;
630 for( it = items.begin(); it != items.end(); ++it ) 622 for( it = items.begin(); it != items.end(); ++it )
631 { 623 {
632 QString interfaceName = it.key()->getInterfaceName(); 624 QString interfaceName = it.key()->getInterfaceName();
633 odebug << interfaceName.latin1() << oendl; 625 odebug << interfaceName.latin1() << oendl;
634 if(interfaces.setInterface(interfaceName + "_" + profileToRemove)) 626 if(interfaces.setInterface(interfaceName + "_" + profileToRemove))
635 { 627 {
636 interfaces.removeInterface(); 628 interfaces.removeInterface();
637 if(interfaces.setMapping(interfaceName)) 629 if(interfaces.setMapping(interfaceName))
638 { 630 {
639 if(profilesList->count() == 1) 631 if(profilesList->count() == 1)
640 interfaces.removeMapping(); 632 interfaces.removeMapping();
641 else 633 else
642 { 634 {
643 interfaces.removeMap("map", interfaceName + "_" + profileToRemove); 635 interfaces.removeMap("map", interfaceName + "_" + profileToRemove);
644 } 636 }
645 } 637 }
646 interfaces.write(); 638 interfaces.write();
647 break; 639 break;
648 } 640 }
649 } 641 }
650 } 642 }
651} 643}
652 644
653/** 645/**
654 * A new profile has been selected, change. 646 * A new profile has been selected, change.
655 * @param newProfile the new profile. 647 * @param newProfile the new profile.
656 */ 648 */
657void MainWindowImp::changeProfile() 649void MainWindowImp::changeProfile()
658{ 650{
659 if(profilesList->currentItem() == -1) 651 if(profilesList->currentItem() == -1)
660 { 652 {
661 QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok); 653 QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok);
662 return; 654 return;
663 } 655 }
664 QString newProfile = profilesList->text(profilesList->currentItem()); 656 QString newProfile = profilesList->text(profilesList->currentItem());
665 if(newProfile != currentProfileLabel->text()) 657 if(newProfile != currentProfileLabel->text())
666 { 658 {
667 currentProfileLabel->setText(newProfile); 659 currentProfileLabel->setText(newProfile);
668 QFile::remove(scheme); 660 QFile::remove(scheme);
669 QFile file(scheme); 661 QFile file(scheme);
670 if ( file.open(IO_ReadWrite) ) 662 if ( file.open(IO_ReadWrite) )
671 { 663 {
672 QTextStream stream( &file ); 664 QTextStream stream( &file );
673 stream << QString("SCHEME=%1").arg(newProfile); 665 stream << QString("SCHEME=%1").arg(newProfile);
674 file.close(); 666 file.close();
675 } 667 }
676 // restart all up devices? 668 // restart all up devices?
677 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok) 669 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok)
678 { 670 {
679 // Go through them one by one 671 // Go through them one by one
680 QMap<Interface*, QListViewItem*>::Iterator it; 672 QMap<Interface*, QListViewItem*>::Iterator it;
681 for( it = items.begin(); it != items.end(); ++it ) 673 for( it = items.begin(); it != items.end(); ++it )
682 { 674 {
683 if(it.key()->getStatus() == true) 675 if(it.key()->getStatus() == true)
684 it.key()->restart(); 676 it.key()->restart();
685 } 677 }
686 } 678 }
687 } 679 }
688 // TODO change the profile in the modules 680 // TODO change the profile in the modules
689} 681}
690 682
691 683
692void MainWindowImp::makeChannel() 684void MainWindowImp::makeChannel()
693{ 685{
694 channel = new QCopChannel( "QPE/Application/networksettings", this ); 686 channel = new QCopChannel( "QPE/Application/networksettings", this );
695 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), 687 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
696 this, SLOT(receive(const QCString&,const QByteArray&)) ); 688 this, SLOT(receive(const QCString&,const QByteArray&)) );
697} 689}
698 690
699void MainWindowImp::receive(const QCString &msg, const QByteArray &arg) 691void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
700{ 692{
701 bool found = false; 693 bool found = false;
702 odebug << "MainWindowImp::receive QCop msg >"+msg+"<" << oendl; 694 odebug << "MainWindowImp::receive QCop msg >"+msg+"<" << oendl;
703 if (msg == "raise") 695 if (msg == "raise")
704 { 696 {
705 raise(); 697 raise();
706 return; 698 return;
707 } 699 }
708 700
709 QString dest = msg.left(msg.find("(")); 701 QString dest = msg.left(msg.find("("));
710 QCString param = msg.right(msg.length() - msg.find("(") - 1); 702 QCString param = msg.right(msg.length() - msg.find("(") - 1);
711 param = param.left( param.length() - 1 ); 703 param = param.left( param.length() - 1 );
712 odebug << "dest >" << dest.latin1() << "< param >"+param+"<" << oendl; 704 odebug << "dest >" << dest.latin1() << "< param >"+param+"<" << oendl;
713 705
714 QMap<Module*, QLibrary*>::Iterator it; 706 QMap<Module*, QLibrary*>::Iterator it;
715 for( it = libraries.begin(); it != libraries.end(); ++it ) 707 for( it = libraries.begin(); it != libraries.end(); ++it )
716 { 708 {
717 odebug << "plugin >" << it.key()->type().latin1() << "<" << oendl; 709 odebug << "plugin >" << it.key()->type().latin1() << "<" << oendl;
718 if(it.key()->type() == dest) 710 if(it.key()->type() == dest)
719 { 711 {
720 it.key()->receive( param, arg ); 712 it.key()->receive( param, arg );
721 found = true; 713 found = true;
722 } 714 }
723 } 715 }
724 716
725 717
726 if (found) QPEApplication::setKeepRunning(); 718 if (found) QPEApplication::setKeepRunning();
727 else odebug << "Huh what do ya want" << oendl; 719 else odebug << "Huh what do ya want" << oendl;
728} 720}
729 721
730void MainWindowImp::setHostname() 722void MainWindowImp::setHostname()
731{ 723{
732 static QRegExp filter("[^A-Za-z0-9_\\-\\.]"); 724 static QRegExp filter("[^A-Za-z0-9_\\-\\.]");
733 if (filter.match(m_Nameinput->text())!=-1) { 725 if (filter.match(m_Nameinput->text())!=-1) {
734 odebug << "Wrong hostname" << oendl; 726 odebug << "Wrong hostname" << oendl;
735 QMessageBox::critical(0, tr("Sorry"), tr("This is a wrong name.<br>Please use A-Z, a-z, _, - or a single dot.")); 727 QMessageBox::critical(0, tr("Sorry"), tr("This is a wrong name.<br>Please use A-Z, a-z, _, - or a single dot."));
736 return; 728 return;
737 } 729 }
738 730
739 OProcess h; 731 OProcess h;
740 _procTemp=""; 732 _procTemp="";
741 h << "hostname" << m_Nameinput->text(); 733 h << "hostname" << m_Nameinput->text();
742 connect(&h,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int))); 734 connect(&h,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int)));
743 h.start(OProcess::Block,OProcess::Stderr); 735 h.start(OProcess::Block,OProcess::Stderr);
744 odebug << "Got " << _procTemp << " - " << h.exitStatus() << oendl; 736 odebug << "Got " << _procTemp << " - " << h.exitStatus() << oendl;
745 if (h.exitStatus()!=0) { 737 if (h.exitStatus()!=0) {
746 QMessageBox::critical(0, tr("Sorry"), QString(tr("Could not set name.\n%1")).arg(_procTemp.stripWhiteSpace())); 738 QMessageBox::critical(0, tr("Sorry"), QString(tr("Could not set name.\n%1")).arg(_procTemp.stripWhiteSpace()));
747 return; 739 return;
748 } 740 }
749 _procTemp=""; 741 _procTemp="";
750 742
751 QFile f(_HOSTFILE); 743 QFile f(_HOSTFILE);
752 if (f.open(IO_Truncate|IO_WriteOnly)) 744 if (f.open(IO_Truncate|IO_WriteOnly))
753 { 745 {
754 QTextStream s(&f); 746 QTextStream s(&f);
755 s << m_Nameinput->text(); 747 s << m_Nameinput->text();
756 } else { 748 } else {
757 QMessageBox::critical(0, tr("Sorry"), tr("Could not save name.")); 749 QMessageBox::critical(0, tr("Sorry"), tr("Could not save name."));
758 return; 750 return;
759 } 751 }
760 752
761 f.close(); 753 f.close();
762 f.setName(_IRDANAME); 754 f.setName(_IRDANAME);
763 if (f.open(IO_WriteOnly)) 755 if (f.open(IO_WriteOnly))
764 { 756 {
765 QTextStream s(&f); 757 QTextStream s(&f);
766 s << m_Nameinput->text(); 758 s << m_Nameinput->text();
767 } else { 759 } else {
768 QMessageBox::critical(0, tr("Sorry"), tr("Could not set infrared name.")); 760 QMessageBox::critical(0, tr("Sorry"), tr("Could not set infrared name."));
769 } 761 }
770} 762}
771 763
772void MainWindowImp::initHostname() 764void MainWindowImp::initHostname()
773{ 765{
774 OProcess h; 766 OProcess h;
775 _procTemp=""; 767 _procTemp="";
776 768
777 h << "hostname"; 769 h << "hostname";
778 connect(&h,SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int))); 770 connect(&h,SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int)));
779 h.start(OProcess::Block,OProcess::AllOutput); 771 h.start(OProcess::Block,OProcess::AllOutput);
780 odebug << "Got " << _procTemp <<oendl; 772 odebug << "Got " << _procTemp <<oendl;
781 m_Nameinput->setText(_procTemp.stripWhiteSpace()); 773 m_Nameinput->setText(_procTemp.stripWhiteSpace());
782 _procTemp=""; 774 _procTemp="";
783} 775}
784 776
785void MainWindowImp::slotHostname(Opie::Core::OProcess *proc, char *buffer, int buflen) 777void MainWindowImp::slotHostname(Opie::Core::OProcess */*proc*/, char *buffer, int buflen)
786{ 778{
787 if (buflen < 1 || buffer==0) return; 779 if (buflen < 1 || buffer==0) return;
788 char*_t = new char[buflen+1]; 780 char*_t = new char[buflen+1];
789 ::memset(_t,0,buflen+1); 781 ::memset(_t,0,buflen+1);
790 ::memcpy(_t,buffer,buflen); 782 ::memcpy(_t,buffer,buflen);
791 _procTemp+=_t; 783 _procTemp+=_t;
792 delete[]_t; 784 delete[]_t;
793} 785}
diff --git a/noncore/settings/networksettings/ppp/edit.cpp b/noncore/settings/networksettings/ppp/edit.cpp
index 6c9735c..0abf161 100644
--- a/noncore/settings/networksettings/ppp/edit.cpp
+++ b/noncore/settings/networksettings/ppp/edit.cpp
@@ -1,280 +1,284 @@
1/* 1/*
2 * kPPP: A pppd Front End for the KDE project 2 * kPPP: A pppd Front End for the KDE project
3 * 3 *
4 * $Id$ 4 * $Id$
5 * Copyright (C) 1997 Bernd Johannes Wuebben 5 * Copyright (C) 1997 Bernd Johannes Wuebben
6 * wuebben@math.cornell.edu 6 * wuebben@math.cornell.edu
7 * 7 *
8 * based on EzPPP: 8 * based on EzPPP:
9 * Copyright (C) 1997 Jay Painter 9 * Copyright (C) 1997 Jay Painter
10 * 10 *
11 * This program is free software; you can redistribute it and/or 11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Library General Public 12 * modify it under the terms of the GNU Library General Public
13 * License as published by the Free Software Foundation; either 13 * License as published by the Free Software Foundation; either
14 * version 2 of the License, or (at your option) any later version. 14 * version 2 of the License, or (at your option) any later version.
15 * 15 *
16 * This program is distributed in the hope that it will be useful, 16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Library General Public License for more details. 19 * Library General Public License for more details.
20 * 20 *
21 * You should have received a copy of the GNU Library General Public 21 * You should have received a copy of the GNU Library General Public
22 * License along with this program; if not, write to the Free 22 * License along with this program; if not, write to the Free
23 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 */ 24 */
25 25
26#include "edit.h" 26#include "edit.h"
27#include "pppdata.h" 27#include "pppdata.h"
28#include "iplined.h" 28#include "iplined.h"
29#include "auth.h" 29#include "auth.h"
30 30
31/* OPIE */ 31/* OPIE */
32#include <qpe/resource.h> 32#include <opie2/oresource.h>
33
34#include <qpe/applnk.h>
33#include <qpe/qpeapplication.h> 35#include <qpe/qpeapplication.h>
34 36
35/* QT */ 37/* QT */
36#include <qlayout.h> 38#include <qlayout.h>
37#include <qmessagebox.h> 39#include <qmessagebox.h>
38#include <qwhatsthis.h> 40#include <qwhatsthis.h>
39#include <qregexp.h> 41#include <qregexp.h>
40#include <qapplication.h> 42#include <qapplication.h>
41#include <qbuttongroup.h> 43#include <qbuttongroup.h>
42#include <qvgroupbox.h> 44#include <qvgroupbox.h>
43#include <qhbox.h> 45#include <qhbox.h>
44#include <qdialog.h> 46#include <qdialog.h>
45 47
46/* STD */ 48/* STD */
47 49
48#include <string.h> 50#include <string.h>
49#include <termios.h> 51#include <termios.h>
50 52
51DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount 53DialWidget::DialWidget( PPPData *pd, QWidget *parent, bool isnewaccount
52 , const char *name ) 54 , const char *name )
53 : QWidget(parent, name), _pppdata(pd) 55 : QWidget(parent, name), _pppdata(pd)
54{ 56{
55 const int GRIDROWS = 6; 57 const int GRIDROWS = 6;
56 58
57 QGridLayout *tl = new QGridLayout(this, GRIDROWS, 2, 0 ); 59 QGridLayout *tl = new QGridLayout(this, GRIDROWS, 2, 0 );
58 60
59 connect_label = new QLabel(tr("Connection name:"), this); 61 connect_label = new QLabel(tr("Connection name:"), this);
60 tl->addWidget(connect_label, 0, 0); 62 tl->addWidget(connect_label, 0, 0);
61 63
62 connectname_l = new QLineEdit(this); 64 connectname_l = new QLineEdit(this);
63 // connectname_l->setMaxLength(ACCNAME_SIZE); 65 // connectname_l->setMaxLength(ACCNAME_SIZE);
64 tl->addWidget(connectname_l, 0, 1); 66 tl->addWidget(connectname_l, 0, 1);
65 QString tmp = tr("Type in a unique name for this connection"); 67 QString tmp = tr("Type in a unique name for this connection");
66 68
67 QWhatsThis::add(connect_label,tmp); 69 QWhatsThis::add(connect_label,tmp);
68 QWhatsThis::add(connectname_l,tmp); 70 QWhatsThis::add(connectname_l,tmp);
69 71
70 72
71 number_label = new QLabel(tr("Phone number:"), this); 73 number_label = new QLabel(tr("Phone number:"), this);
72 number_label->setAlignment(AlignTop|AlignLeft); 74 number_label->setAlignment(AlignTop|AlignLeft);
73 tl->addWidget(number_label, 1, 0); 75 tl->addWidget(number_label, 1, 0);
74 76
75 QHBoxLayout *lpn = new QHBoxLayout(5); 77 QHBoxLayout *lpn = new QHBoxLayout(5);
76 tl->addLayout(lpn, 1, 1); 78 tl->addLayout(lpn, 1, 1);
77 numbers = new QListBox(this); 79 numbers = new QListBox(this);
78 // numbers->setMinimumSize(120, 70); 80 // numbers->setMinimumSize(120, 70);
79 lpn->addWidget(numbers); 81 lpn->addWidget(numbers);
80 QVBoxLayout *lpn1 = new QVBoxLayout; 82 QVBoxLayout *lpn1 = new QVBoxLayout;
81 lpn->addLayout(lpn1); 83 lpn->addLayout(lpn1);
82 add = new QPushButton(tr("&Add..."), this); 84 add = new QPushButton(tr("&Add..."), this);
83 del = new QPushButton(tr("&Remove"), this); 85 del = new QPushButton(tr("&Remove"), this);
84 86
85 up = new QPushButton(this); 87 up = new QPushButton(this);
86 up->setPixmap( Resource::loadPixmap("up") ); 88 up->setPixmap( Opie::Core::OResource::loadPixmap("up", Opie::Core::OResource::SmallIcon) );
89 up->setMinimumHeight( AppLnk::smallIconSize()+4 );
87 down = new QPushButton(this); 90 down = new QPushButton(this);
88 down->setPixmap( Resource::loadPixmap("down") ); 91 down->setPixmap( Opie::Core::OResource::loadPixmap("down", Opie::Core::OResource::SmallIcon) );
92 down->setMinimumHeight( AppLnk::smallIconSize()+4 );
89 lpn1->addWidget(add); 93 lpn1->addWidget(add);
90 lpn1->addWidget(del); 94 lpn1->addWidget(del);
91 lpn1->addStretch(1); 95 lpn1->addStretch(1);
92 lpn1->addWidget(up); 96 lpn1->addWidget(up);
93 lpn1->addWidget(down); 97 lpn1->addWidget(down);
94 connect(add, SIGNAL(clicked()), 98 connect(add, SIGNAL(clicked()),
95 this, SLOT(addNumber())); 99 this, SLOT(addNumber()));
96 connect(del, SIGNAL(clicked()), 100 connect(del, SIGNAL(clicked()),
97 this, SLOT(delNumber())); 101 this, SLOT(delNumber()));
98 connect(up, SIGNAL(clicked()), 102 connect(up, SIGNAL(clicked()),
99 this, SLOT(upNumber())); 103 this, SLOT(upNumber()));
100 connect(down, SIGNAL(clicked()), 104 connect(down, SIGNAL(clicked()),
101 this, SLOT(downNumber())); 105 this, SLOT(downNumber()));
102 connect(numbers, SIGNAL(highlighted(int)), 106 connect(numbers, SIGNAL(highlighted(int)),
103 this, SLOT(selectionChanged(int))); 107 this, SLOT(selectionChanged(int)));
104 numbersChanged(); 108 numbersChanged();
105 109
106 tmp = tr("<p>Specifies the phone numbers to dial. You\n" 110 tmp = tr("<p>Specifies the phone numbers to dial. You\n"
107 "can supply multiple numbers here, simply\n" 111 "can supply multiple numbers here, simply\n"
108 "click on \"Add\". You can arrange the\n" 112 "click on \"Add\". You can arrange the\n"
109 "order the numbers are tried by using the\n" 113 "order the numbers are tried by using the\n"
110 "arrow buttons.\n\n" 114 "arrow buttons.\n\n"
111 "When a number is busy or fails, <i>kppp</i> will \n" 115 "When a number is busy or fails, <i>kppp</i> will \n"
112 "try the next number and so on"); 116 "try the next number and so on");
113 117
114 QWhatsThis::add(number_label,tmp); 118 QWhatsThis::add(number_label,tmp);
115 QWhatsThis::add(numbers,tmp); 119 QWhatsThis::add(numbers,tmp);
116 120
117 pppdargs = new QPushButton(tr("Customize pppd Arguments..."), this); 121 pppdargs = new QPushButton(tr("Customize pppd Arguments..."), this);
118 connect(pppdargs, SIGNAL(clicked()), SLOT(pppdargsbutton())); 122 connect(pppdargs, SIGNAL(clicked()), SLOT(pppdargsbutton()));
119 tl->addMultiCellWidget(pppdargs, 5, 5, 0, 1, AlignCenter); 123 tl->addMultiCellWidget(pppdargs, 5, 5, 0, 1, AlignCenter);
120 124
121 // Set defaults if editing an existing connection 125 // Set defaults if editing an existing connection
122 if(!isnewaccount) 126 if(!isnewaccount)
123 { 127 {
124 connectname_l->setText(_pppdata->accname()); 128 connectname_l->setText(_pppdata->accname());
125 129
126 // insert the phone numbers into the listbox 130 // insert the phone numbers into the listbox
127 QString n = _pppdata->phonenumber(); 131 QString n = _pppdata->phonenumber();
128 QString tmp = ""; 132 QString tmp = "";
129 uint idx = 0; 133 uint idx = 0;
130 while(idx != n.length()) 134 while(idx != n.length())
131 { 135 {
132 if(n[idx] == ':') 136 if(n[idx] == ':')
133 { 137 {
134 if(tmp.length() > 0) 138 if(tmp.length() > 0)
135 numbers->insertItem(tmp); 139 numbers->insertItem(tmp);
136 tmp = ""; 140 tmp = "";
137 } 141 }
138 else 142 else
139 tmp += n[idx]; 143 tmp += n[idx];
140 idx++; 144 idx++;
141 } 145 }
142 if(tmp.length() > 0) 146 if(tmp.length() > 0)
143 numbers->insertItem(tmp); 147 numbers->insertItem(tmp);
144 148
145 } 149 }
146 150
147 numbersChanged(); 151 numbersChanged();
148 tl->activate(); 152 tl->activate();
149} 153}
150 154
151bool DialWidget::save() 155bool DialWidget::save()
152{ 156{
153 //first check to make sure that the account name is unique! 157 //first check to make sure that the account name is unique!
154 if(connectname_l->text().isEmpty() || 158 if(connectname_l->text().isEmpty() ||
155 !_pppdata->isUniqueAccname(connectname_l->text())) 159 !_pppdata->isUniqueAccname(connectname_l->text()))
156 { 160 {
157 return false; 161 return false;
158 } 162 }
159 else 163 else
160 { 164 {
161 _pppdata->setAccname(connectname_l->text()); 165 _pppdata->setAccname(connectname_l->text());
162 166
163 QString number = ""; 167 QString number = "";
164 for(uint i = 0; i < numbers->count(); i++) 168 for(uint i = 0; i < numbers->count(); i++)
165 { 169 {
166 if(i != 0) 170 if(i != 0)
167 number += ":"; 171 number += ":";
168 number += numbers->text(i); 172 number += numbers->text(i);
169 } 173 }
170 174
171 _pppdata->setPhonenumber(number); 175 _pppdata->setPhonenumber(number);
172 return true; 176 return true;
173 } 177 }
174} 178}
175 179
176 180
177void DialWidget::numbersChanged() 181void DialWidget::numbersChanged()
178{ 182{
179 int sel = numbers->currentItem(); 183 int sel = numbers->currentItem();
180 184
181 del->setEnabled(sel != -1); 185 del->setEnabled(sel != -1);
182 up->setEnabled(sel != -1 && sel != 0); 186 up->setEnabled(sel != -1 && sel != 0);
183 down->setEnabled(sel != -1 && sel != (int)numbers->count()-1); 187 down->setEnabled(sel != -1 && sel != (int)numbers->count()-1);
184} 188}
185 189
186 190
187void DialWidget::selectionChanged(int) 191void DialWidget::selectionChanged(int)
188{ 192{
189 numbersChanged(); 193 numbersChanged();
190} 194}
191 195
192 196
193void DialWidget::addNumber() 197void DialWidget::addNumber()
194{ 198{
195 PhoneNumberDialog dlg(this); 199 PhoneNumberDialog dlg(this);
196 if(dlg.exec()) 200 if(dlg.exec())
197 { 201 {
198 numbers->insertItem(dlg.phoneNumber()); 202 numbers->insertItem(dlg.phoneNumber());
199 numbersChanged(); 203 numbersChanged();
200 } 204 }
201} 205}
202 206
203 207
204void DialWidget::delNumber() 208void DialWidget::delNumber()
205{ 209{
206 if(numbers->currentItem() != -1) 210 if(numbers->currentItem() != -1)
207 { 211 {
208 numbers->removeItem(numbers->currentItem()); 212 numbers->removeItem(numbers->currentItem());
209 numbersChanged(); 213 numbersChanged();
210 } 214 }
211} 215}
212 216
213 217
214void DialWidget::upNumber() 218void DialWidget::upNumber()
215{ 219{
216 int idx = numbers->currentItem(); 220 int idx = numbers->currentItem();
217 if(idx != -1) 221 if(idx != -1)
218 { 222 {
219 QString item = numbers->text(idx); 223 QString item = numbers->text(idx);
220 numbers->removeItem(idx); 224 numbers->removeItem(idx);
221 numbers->insertItem(item, idx-1); 225 numbers->insertItem(item, idx-1);
222 numbers->setCurrentItem(idx-1); 226 numbers->setCurrentItem(idx-1);
223 numbersChanged(); 227 numbersChanged();
224 } 228 }
225} 229}
226 230
227 231
228void DialWidget::downNumber() 232void DialWidget::downNumber()
229{ 233{
230 int idx = numbers->currentItem(); 234 int idx = numbers->currentItem();
231 if(idx != -1) 235 if(idx != -1)
232 { 236 {
233 QString item = numbers->text(idx); 237 QString item = numbers->text(idx);
234 numbers->removeItem(idx); 238 numbers->removeItem(idx);
235 numbers->insertItem(item, idx+1); 239 numbers->insertItem(item, idx+1);
236 numbers->setCurrentItem(idx+1); 240 numbers->setCurrentItem(idx+1);
237 numbersChanged(); 241 numbersChanged();
238 } 242 }
239} 243}
240 244
241 245
242void DialWidget::pppdargsbutton() 246void DialWidget::pppdargsbutton()
243{ 247{
244 PPPdArguments pa(_pppdata, this); 248 PPPdArguments pa(_pppdata, this);
245 QPEApplication::execDialog( &pa ); 249 QPEApplication::execDialog( &pa );
246} 250}
247 251
248 252
249 253
250///////////////////////////////////////////////////////////////////////////// 254/////////////////////////////////////////////////////////////////////////////
251// ExecWidget 255// ExecWidget
252///////////////////////////////////////////////////////////////////////////// 256/////////////////////////////////////////////////////////////////////////////
253ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name) : 257ExecWidget::ExecWidget(PPPData *pd, QWidget *parent, bool isnewaccount, const char *name) :
254 QWidget(parent, name), _pppdata(pd) 258 QWidget(parent, name), _pppdata(pd)
255{ 259{
256 QVBoxLayout *tl = new QVBoxLayout(this, 0 );//, KDialog::spacingHint()); 260 QVBoxLayout *tl = new QVBoxLayout(this, 0 );//, KDialog::spacingHint());
257 261
258 QLabel *l = new QLabel( tr("Here you can select commands to run at certain stages of the connection. The commands are run with your real user id, so you cannot run any commands here requiring root permissions (unless, of course, you are root).<br><br>Be sure to supply the whole path to the program otherwise we might be unable to find it."), this); 262 QLabel *l = new QLabel( tr("Here you can select commands to run at certain stages of the connection. The commands are run with your real user id, so you cannot run any commands here requiring root permissions (unless, of course, you are root).<br><br>Be sure to supply the whole path to the program otherwise we might be unable to find it."), this);
259 263
260 tl->addWidget(l); 264 tl->addWidget(l);
261 tl->addStretch(1); 265 tl->addStretch(1);
262 266
263 QGridLayout *l1 = new QGridLayout(4, 2, 10); 267 QGridLayout *l1 = new QGridLayout(4, 2, 10);
264 tl->addLayout(l1); 268 tl->addLayout(l1);
265 l1->setColStretch(0, 0); 269 l1->setColStretch(0, 0);
266 l1->setColStretch(1, 1); 270 l1->setColStretch(1, 1);
267 271
268 before_connect_l = new QLabel(tr("Before connect:"), this); 272 before_connect_l = new QLabel(tr("Before connect:"), this);
269 before_connect_l->setAlignment(AlignVCenter); 273 before_connect_l->setAlignment(AlignVCenter);
270 l1->addWidget(before_connect_l, 0, 0); 274 l1->addWidget(before_connect_l, 0, 0);
271 before_connect = new QLineEdit(this); 275 before_connect = new QLineEdit(this);
272 // before_connect->setMaxLength(COMMAND_SIZE); 276 // before_connect->setMaxLength(COMMAND_SIZE);
273 l1->addWidget(before_connect, 0, 1); 277 l1->addWidget(before_connect, 0, 1);
274 QString tmp = tr("Allows you to run a program <b>before</b> a connection\n" 278 QString tmp = tr("Allows you to run a program <b>before</b> a connection\n"
275 "is established. It is called immediately before\n" 279 "is established. It is called immediately before\n"
276 "dialing has begun.\n\n" 280 "dialing has begun.\n\n"
277 "This might be useful, e.g. to stop HylaFAX blocking the\n" 281 "This might be useful, e.g. to stop HylaFAX blocking the\n"
278 "modem."); 282 "modem.");
279 283
280 QWhatsThis::add(before_connect_l,tmp); 284 QWhatsThis::add(before_connect_l,tmp);
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp
index 2fd97c3..0c18bcc 100644
--- a/noncore/settings/networksettings/wlan/wlanimp2.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp
@@ -1,207 +1,207 @@
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#include "../interfaces/interface.h" 4#include "../interfaces/interface.h"
5 5
6#include <assert.h> 6#include <assert.h>
7#include <errno.h> 7#include <errno.h>
8#include <string.h> 8#include <string.h>
9 9
10/* OPIE */ 10/* OPIE */
11#include <opie2/odebug.h> 11#include <opie2/odebug.h>
12#include <opie2/oprocess.h> 12#include <opie2/oprocess.h>
13#include <opie2/onetwork.h> 13#include <opie2/onetwork.h>
14#include <opie2/opcap.h> 14#include <opie2/opcap.h>
15#include <qpe/resource.h> 15#include <opie2/oresource.h>
16using namespace Opie::Core; 16using namespace Opie::Core;
17using namespace Opie::Net; 17using namespace Opie::Net;
18 18
19/* QT */ 19/* QT */
20#include <qapplication.h> 20#include <qapplication.h>
21#include <qfile.h> 21#include <qfile.h>
22#include <qdir.h> 22#include <qdir.h>
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qtextstream.h> 24#include <qtextstream.h>
25#include <qmessagebox.h> 25#include <qmessagebox.h>
26#include <qlineedit.h> 26#include <qlineedit.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qspinbox.h> 28#include <qspinbox.h>
29#include <qradiobutton.h> 29#include <qradiobutton.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31#include <qcheckbox.h> 31#include <qcheckbox.h>
32#include <qtabwidget.h> 32#include <qtabwidget.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qlistview.h> 34#include <qlistview.h>
35#include <qvbox.h> 35#include <qvbox.h>
36#include <qprogressbar.h> 36#include <qprogressbar.h>
37 37
38/* STD */ 38/* STD */
39#include <assert.h> 39#include <assert.h>
40#include <errno.h> 40#include <errno.h>
41#include <string.h> 41#include <string.h>
42 42
43#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts" 43#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts"
44#define PREUP "/etc/network/if-pre-up.d/wireless-tools" 44#define PREUP "/etc/network/if-pre-up.d/wireless-tools"
45 45
46/** 46/**
47 * Constructor, read in the wireless.opts file for parsing later. 47 * Constructor, read in the wireless.opts file for parsing later.
48 */ 48 */
49WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), interface(i), currentProfile("*") { 49WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), interface(i), currentProfile("*") {
50 interfaces = new Interfaces(); 50 interfaces = new Interfaces();
51 interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces); 51 interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces);
52 tabWidget->insertTab(interfaceSetup, "TCP/IP"); 52 tabWidget->insertTab(interfaceSetup, "TCP/IP");
53 53
54 // Check sanity - the existance of the wireless-tools if-pre-up script 54 // Check sanity - the existance of the wireless-tools if-pre-up script
55 QFile file(QString(PREUP)); 55 QFile file(QString(PREUP));
56 if (file.exists()) { 56 if (file.exists()) {
57 owarn << QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools") << oendl; 57 owarn << QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools") << oendl;
58 } 58 }
59 59
60 connect( rescanButton, SIGNAL( clicked() ), this, SLOT( rescanNeighbourhood() ) ); 60 connect( rescanButton, SIGNAL( clicked() ), this, SLOT( rescanNeighbourhood() ) );
61 connect( netView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( selectNetwork(QListViewItem*) ) ); 61 connect( netView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( selectNetwork(QListViewItem*) ) );
62 netView->setColumnAlignment( col_chn, AlignCenter ); 62 netView->setColumnAlignment( col_chn, AlignCenter );
63 netView->setItemMargin( 3 ); 63 netView->setItemMargin( 3 );
64 netView->setAllColumnsShowFocus( true ); 64 netView->setAllColumnsShowFocus( true );
65 65
66} 66}
67 67
68WLANImp::~WLANImp() { 68WLANImp::~WLANImp() {
69//FIXME: delete interfaces; 69//FIXME: delete interfaces;
70} 70}
71 71
72/** 72/**
73 * Change the profile for both wireless settings and network settings. 73 * Change the profile for both wireless settings and network settings.
74 */ 74 */
75void WLANImp::setProfile(const QString &profile){ 75void WLANImp::setProfile(const QString &profile){
76 interfaceSetup->setProfile(profile); 76 interfaceSetup->setProfile(profile);
77 parseOpts(); 77 parseOpts();
78} 78}
79 79
80void WLANImp::parseOpts() { 80void WLANImp::parseOpts() {
81 bool error; 81 bool error;
82 QString opt,key; 82 QString opt,key;
83 83
84 if (! interfaces->isInterfaceSet()) 84 if (! interfaces->isInterfaceSet())
85 return; 85 return;
86 86
87 opt = interfaces->getInterfaceOption("wireless_essid", error); 87 opt = interfaces->getInterfaceOption("wireless_essid", error);
88 if(opt == "any" || opt == "off" || opt.isNull()){ 88 if(opt == "any" || opt == "off" || opt.isNull()){
89 essid->setEditText("any"); 89 essid->setEditText("any");
90 } else { 90 } else {
91 essid->setEditText(opt); 91 essid->setEditText(opt);
92 } 92 }
93 93
94 opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); 94 opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace();
95 95
96 for ( int i = 0; i < mode->count(); i++) 96 for ( int i = 0; i < mode->count(); i++)
97 if ( mode->text( i ) == opt ) mode->setCurrentItem( i ); 97 if ( mode->text( i ) == opt ) mode->setCurrentItem( i );
98 98
99 opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); 99 opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace();
100 if (! opt.isNull()) { 100 if (! opt.isNull()) {
101 specifyAp->setChecked(true); 101 specifyAp->setChecked(true);
102 macEdit->setText(opt); 102 macEdit->setText(opt);
103 } 103 }
104 104
105 opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); 105 opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace();
106 if (! opt.isNull()) { 106 if (! opt.isNull()) {
107 specifyChan->setChecked(true); 107 specifyChan->setChecked(true);
108 networkChannel->setValue(opt.toInt()); 108 networkChannel->setValue(opt.toInt());
109 } 109 }
110 110
111 opt = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace(); 111 opt = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace();
112 112
113 if ( opt == "wlan-ng") { 113 if ( opt == "wlan-ng") {
114 114
115 //FIXME:Handle wlan_ng_priv_genstr 115 //FIXME:Handle wlan_ng_priv_genstr
116 116
117 // get default key_id 117 // get default key_id
118 opt = interfaces->getInterfaceOption("wlan_ng_default_key_id", error).simplifyWhiteSpace(); 118 opt = interfaces->getInterfaceOption("wlan_ng_default_key_id", error).simplifyWhiteSpace();
119 119
120 if (opt == "0") 120 if (opt == "0")
121 keyRadio0->setChecked(true); 121 keyRadio0->setChecked(true);
122 if (opt == "1") 122 if (opt == "1")
123 keyRadio1->setChecked(true); 123 keyRadio1->setChecked(true);
124 if (opt == "2") 124 if (opt == "2")
125 keyRadio2->setChecked(true); 125 keyRadio2->setChecked(true);
126 if (opt == "3") 126 if (opt == "3")
127 keyRadio3->setChecked(true); 127 keyRadio3->setChecked(true);
128 128
129 // get key0 129 // get key0
130 key = interfaces->getInterfaceOption("wlan_ng_key0", error).simplifyWhiteSpace(); 130 key = interfaces->getInterfaceOption("wlan_ng_key0", error).simplifyWhiteSpace();
131 key.replace(QString(":"),QString("")); 131 key.replace(QString(":"),QString(""));
132 keyLineEdit0->setText(key); 132 keyLineEdit0->setText(key);
133 133
134 // get key1 134 // get key1
135 key = interfaces->getInterfaceOption("wlan_ng_key1", error).simplifyWhiteSpace(); 135 key = interfaces->getInterfaceOption("wlan_ng_key1", error).simplifyWhiteSpace();
136 key.replace(QString(":"),QString("")); 136 key.replace(QString(":"),QString(""));
137 keyLineEdit1->setText(key); 137 keyLineEdit1->setText(key);
138 138
139 // get key2 139 // get key2
140 key = interfaces->getInterfaceOption("wlan_ng_key2", error).simplifyWhiteSpace(); 140 key = interfaces->getInterfaceOption("wlan_ng_key2", error).simplifyWhiteSpace();
141 key.replace(QString(":"),QString("")); 141 key.replace(QString(":"),QString(""));
142 keyLineEdit2->setText(key); 142 keyLineEdit2->setText(key);
143 143
144 // get key3 144 // get key3
145 key = interfaces->getInterfaceOption("wlan_ng_key3", error).simplifyWhiteSpace(); 145 key = interfaces->getInterfaceOption("wlan_ng_key3", error).simplifyWhiteSpace();
146 key.replace(QString(":"),QString("")); 146 key.replace(QString(":"),QString(""));
147 keyLineEdit3->setText(key); 147 keyLineEdit3->setText(key);
148 148
149 opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); 149 opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace();
150 150
151 // encryption on? 151 // encryption on?
152 if(opt == "on"){ 152 if(opt == "on"){
153 wepEnabled->setChecked(true); 153 wepEnabled->setChecked(true);
154 } else { 154 } else {
155 wepEnabled->setChecked(false); 155 wepEnabled->setChecked(false);
156 } 156 }
157 157
158 opt = interfaces->getInterfaceOption("wireless_keymode", error).simplifyWhiteSpace(); 158 opt = interfaces->getInterfaceOption("wireless_keymode", error).simplifyWhiteSpace();
159 159
160 if(opt == "restricted"){ 160 if(opt == "restricted"){
161 // restricted mode, only accept encrypted packets 161 // restricted mode, only accept encrypted packets
162 rejectNonEnc->setChecked(true); 162 rejectNonEnc->setChecked(true);
163 } 163 }
164 } 164 }
165 else { 165 else {
166 opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); 166 opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace();
167 167
168 parseKeyStr(opt); 168 parseKeyStr(opt);
169 } 169 }
170} 170}
171 171
172void WLANImp::parseKeyStr(QString keystr) { 172void WLANImp::parseKeyStr(QString keystr) {
173 int index = 1; 173 int index = 1;
174 QString key; 174 QString key;
175 QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); 175 QStringList keys = QStringList::split(QRegExp("\\s+"), keystr);
176 int enc = -1; // encryption state 176 int enc = -1; // encryption state
177 177
178 for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { 178 for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) {
179 if ((*it).left(3) == "off") { 179 if ((*it).left(3) == "off") {
180 // encryption disabled 180 // encryption disabled
181 enc = 0; 181 enc = 0;
182 } else if ((*it).left(2) == "on") { 182 } else if ((*it).left(2) == "on") {
183 // encryption enabled 183 // encryption enabled
184 enc = 1; 184 enc = 1;
185 } else if ((*it).left(4) == "open") { 185 } else if ((*it).left(4) == "open") {
186 // open mode, accept non encrypted packets 186 // open mode, accept non encrypted packets
187 acceptNonEnc->setChecked(true); 187 acceptNonEnc->setChecked(true);
188 } else if ((*it).left(10) == "restricted") { 188 } else if ((*it).left(10) == "restricted") {
189 // restricted mode, only accept encrypted packets 189 // restricted mode, only accept encrypted packets
190 rejectNonEnc->setChecked(true); 190 rejectNonEnc->setChecked(true);
191 } else if ((*it).left(3) == "key") { 191 } else if ((*it).left(3) == "key") {
192 // new set of options 192 // new set of options
193 } else if ((*it).left(1) == "[") { 193 } else if ((*it).left(1) == "[") {
194 index = (*it).mid(1, 1).toInt(); 194 index = (*it).mid(1, 1).toInt();
195 // switch current key to index 195 // switch current key to index
196 switch (index) { 196 switch (index) {
197 case 1: 197 case 1:
198 keyRadio0->setChecked(true); 198 keyRadio0->setChecked(true);
199 break; 199 break;
200 case 2: 200 case 2:
201 keyRadio1->setChecked(true); 201 keyRadio1->setChecked(true);
202 break; 202 break;
203 case 3: 203 case 3:
204 keyRadio2->setChecked(true); 204 keyRadio2->setChecked(true);
205 break; 205 break;
206 case 4: 206 case 4:
207 keyRadio3->setChecked(true); 207 keyRadio3->setChecked(true);
@@ -413,215 +413,215 @@ void WLANImp::writeOpts() {
413 keyList += "key"; 413 keyList += "key";
414 if (keyRadio0->isChecked()) { 414 if (keyRadio0->isChecked()) {
415 keyList += "[1]"; 415 keyList += "[1]";
416 } else if (keyRadio1->isChecked()) { 416 } else if (keyRadio1->isChecked()) {
417 keyList += "[2]"; 417 keyList += "[2]";
418 } else if (keyRadio2->isChecked()) { 418 } else if (keyRadio2->isChecked()) {
419 keyList += "[3]"; 419 keyList += "[3]";
420 } else if (keyRadio3->isChecked()) { 420 } else if (keyRadio3->isChecked()) {
421 keyList += "[4]"; 421 keyList += "[4]";
422 } 422 }
423 interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); 423 interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" ")));
424 } else { 424 } else {
425 interfaces->removeInterfaceOption(QString("wireless_key")); 425 interfaces->removeInterfaceOption(QString("wireless_key"));
426 } 426 }
427 interfaces->removeInterfaceOption(QString("wireless_enc")); 427 interfaces->removeInterfaceOption(QString("wireless_enc"));
428 } 428 }
429 429
430 if(!interfaceSetup->saveChanges()) 430 if(!interfaceSetup->saveChanges())
431 return; 431 return;
432 432
433 QDialog::accept(); 433 QDialog::accept();
434} 434}
435 435
436/* 436/*
437 * Scan for possible wireless networks around... 437 * Scan for possible wireless networks around...
438 * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> 438 * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org>
439 */ 439 */
440 440
441void WLANImp::rescanNeighbourhood() 441void WLANImp::rescanNeighbourhood()
442{ 442{
443 QString name = interface->getInterfaceName(); 443 QString name = interface->getInterfaceName();
444 odebug << "rescanNeighbourhood via '" << name << "'" << oendl; 444 odebug << "rescanNeighbourhood via '" << name << "'" << oendl;
445 445
446 OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) ); 446 OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) );
447 assert( wiface ); 447 assert( wiface );
448 448
449 // try to guess device type 449 // try to guess device type
450 QString devicetype; 450 QString devicetype;
451 QFile m( "/proc/modules" ); 451 QFile m( "/proc/modules" );
452 if ( m.open( IO_ReadOnly ) ) 452 if ( m.open( IO_ReadOnly ) )
453 { 453 {
454 QString line; 454 QString line;
455 QTextStream modules( &m ); 455 QTextStream modules( &m );
456 while( !modules.atEnd() && !devicetype ) 456 while( !modules.atEnd() && !devicetype )
457 { 457 {
458 modules >> line; 458 modules >> line;
459 if ( line.contains( "cisco" ) ) devicetype = "cisco"; 459 if ( line.contains( "cisco" ) ) devicetype = "cisco";
460 else if ( line.contains( "hostap" ) ) devicetype = "hostap"; 460 else if ( line.contains( "hostap" ) ) devicetype = "hostap";
461 else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */ 461 else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */
462 else if ( line.contains( "orinoco" ) ) devicetype = "orinoco"; 462 else if ( line.contains( "orinoco" ) ) devicetype = "orinoco";
463 } 463 }
464 } 464 }
465 if ( devicetype.isEmpty() ) 465 if ( devicetype.isEmpty() )
466 { 466 {
467 owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl; 467 owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl;
468 return; 468 return;
469 } 469 }
470 else 470 else
471 { 471 {
472 odebug << "rescanNeighbourhood(): device type seems to be '" << devicetype << "'" << oendl; 472 odebug << "rescanNeighbourhood(): device type seems to be '" << devicetype << "'" << oendl;
473 } 473 }
474 474
475 // configure interface to receive 802.11 management frames 475 // configure interface to receive 802.11 management frames
476 476
477 wiface->setUp( true ); 477 wiface->setUp( true );
478 wiface->setPromiscuousMode( true ); 478 wiface->setPromiscuousMode( true );
479 479
480 if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) ); 480 if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) );
481 else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) ); 481 else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) );
482 else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) ); 482 else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) );
483 else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) ); 483 else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) );
484 else 484 else
485 { 485 {
486 odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl; 486 odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl;
487 return; 487 return;
488 } 488 }
489 489
490 wiface->setMode( "monitor" ); 490 wiface->setMode( "monitor" );
491 if ( wiface->mode() != "monitor" ) 491 if ( wiface->mode() != "monitor" )
492 { 492 {
493 owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl; 493 owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl;
494 return; 494 return;
495 } 495 }
496 496
497 // open a packet capturer 497 // open a packet capturer
498 OPacketCapturer* cap = new OPacketCapturer(); 498 OPacketCapturer* cap = new OPacketCapturer();
499 cap->open( name ); 499 cap->open( name );
500 if ( !cap->isOpen() ) 500 if ( !cap->isOpen() )
501 { 501 {
502 owarn << "rescanNeighbourhood(): Unable to open libpcap (" << strerror( errno ) << ")." << oendl; 502 owarn << "rescanNeighbourhood(): Unable to open libpcap (" << strerror( errno ) << ")." << oendl;
503 return; 503 return;
504 } 504 }
505 505
506 // disable button and display splash screen 506 // disable button and display splash screen
507 rescanButton->setEnabled( false ); 507 rescanButton->setEnabled( false );
508 QFrame* splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize ); 508 QFrame* splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize );
509 splash->setLineWidth( 2 ); 509 splash->setLineWidth( 2 );
510 splash->setFrameStyle( QFrame::Panel | QFrame::Raised ); 510 splash->setFrameStyle( QFrame::Panel | QFrame::Raised );
511 QVBoxLayout* vbox = new QVBoxLayout( splash, 4, 4 ); 511 QVBoxLayout* vbox = new QVBoxLayout( splash, 4, 4 );
512 QLabel* lab = new QLabel( "<center><b>Scanning...</b><br>Please Wait...</center>", splash ); 512 QLabel* lab = new QLabel( "<center><b>Scanning...</b><br>Please Wait...</center>", splash );
513 QProgressBar* pb = new QProgressBar( wiface->channels(), splash ); 513 QProgressBar* pb = new QProgressBar( wiface->channels(), splash );
514 vbox->addWidget( lab ); 514 vbox->addWidget( lab );
515 vbox->addWidget( pb ); 515 vbox->addWidget( pb );
516 pb->setCenterIndicator( true ); 516 pb->setCenterIndicator( true );
517 pb->setFixedHeight( pb->sizeHint().height() ); 517 pb->setFixedHeight( pb->sizeHint().height() );
518 QWidget* widgetDesktop = qApp->desktop(); 518 QWidget* widgetDesktop = qApp->desktop();
519 int dw = widgetDesktop->width(); 519 int dw = widgetDesktop->width();
520 int dh = widgetDesktop->height(); 520 int dh = widgetDesktop->height();
521 int pw = vbox->sizeHint().width(); 521 int pw = vbox->sizeHint().width();
522 int ph = vbox->sizeHint().height(); 522 int ph = vbox->sizeHint().height();
523 splash->setGeometry((dw-pw)/2,(dh-ph)/2,pw,ph); 523 splash->setGeometry((dw-pw)/2,(dh-ph)/2,pw,ph);
524 splash->show(); 524 splash->show();
525 splash->raise(); 525 splash->raise();
526 qApp->processEvents(); 526 qApp->processEvents();
527 527
528 // set capturer to non-blocking mode 528 // set capturer to non-blocking mode
529 cap->setBlocking( false ); 529 cap->setBlocking( false );
530 530
531 for ( int i = 1; i <= wiface->channels(); ++i ) 531 for ( int i = 1; i <= wiface->channels(); ++i )
532 { 532 {
533 wiface->setChannel( i ); 533 wiface->setChannel( i );
534 pb->setProgress( i ); 534 pb->setProgress( i );
535 qApp->processEvents(); 535 qApp->processEvents();
536 odebug << "rescanNeighbourhood(): listening on channel " << i << "..." << oendl; 536 odebug << "rescanNeighbourhood(): listening on channel " << i << "..." << oendl;
537 OPacket* p = cap->next( 1000 ); 537 OPacket* p = cap->next( 1000 );
538 if ( !p ) 538 if ( !p )
539 { 539 {
540 odebug << "rescanNeighbourhood(): nothing received on channel " << i << "" << oendl; 540 odebug << "rescanNeighbourhood(): nothing received on channel " << i << "" << oendl;
541 } 541 }
542 else 542 else
543 { 543 {
544 odebug << "rescanNeighbourhood(): TADAA - something came in on channel " << i << "" << oendl; 544 odebug << "rescanNeighbourhood(): TADAA - something came in on channel " << i << "" << oendl;
545 handlePacket( p ); 545 handlePacket( p );
546 } 546 }
547 } 547 }
548 548
549 cap->close(); 549 cap->close();
550 wiface->setMode( "managed" ); // TODO: use previous mode 550 wiface->setMode( "managed" ); // TODO: use previous mode
551 wiface->setPromiscuousMode( false ); 551 wiface->setPromiscuousMode( false );
552 552
553 // hide splash screen and reenable button 553 // hide splash screen and reenable button
554 splash->hide(); 554 splash->hide();
555 delete splash; 555 delete splash;
556 rescanButton->setEnabled( true ); 556 rescanButton->setEnabled( true );
557} 557}
558 558
559void WLANImp::handlePacket( OPacket* p ) 559void WLANImp::handlePacket( OPacket* p )
560{ 560{
561 561
562 // check if we received a beacon frame 562 // check if we received a beacon frame
563 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); 563 OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) );
564 if ( beacon && beacon->managementType() == "Beacon" ) 564 if ( beacon && beacon->managementType() == "Beacon" )
565 { 565 {
566 566
567 QString type; 567 QString type;
568 if ( beacon->canIBSS() ) 568 if ( beacon->canIBSS() )
569 { 569 {
570 type = "adhoc"; 570 type = "adhoc";
571 } 571 }
572 else if ( beacon->canESS() ) 572 else if ( beacon->canESS() )
573 { 573 {
574 type = "managed"; 574 type = "managed";
575 } 575 }
576 else 576 else
577 { 577 {
578 owarn << "handlePacket(): invalid frame [possibly noise] detected!" << oendl; 578 owarn << "handlePacket(): invalid frame [possibly noise] detected!" << oendl;
579 return; 579 return;
580 } 580 }
581 581
582 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); 582 OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) );
583 QString essid = ssid ? ssid->ID() : QString("<unknown>"); 583 QString essid = ssid ? ssid->ID() : QString("<unknown>");
584 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); 584 OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) );
585 int channel = ds ? ds->channel() : -1; 585 int channel = ds ? ds->channel() : -1;
586 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); 586 OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) );
587 displayFoundNetwork( type, channel, essid, header->macAddress2() ); 587 displayFoundNetwork( type, channel, essid, header->macAddress2() );
588 } 588 }
589} 589}
590 590
591 591
592void WLANImp::displayFoundNetwork( const QString& mode, int channel, const QString& ssid, const OMacAddress& mac ) 592void WLANImp::displayFoundNetwork( const QString& mode, int channel, const QString& ssid, const OMacAddress& mac )
593{ 593{
594 594
595 odebug << "found network: <" << (const char*) mode << ">, chn " << channel 595 odebug << "found network: <" << (const char*) mode << ">, chn " << channel
596 << ", ssid '" << (const char*) ssid << "', mac '" << (const char*) mac.toString() << "'" << oendl; 596 << ", ssid '" << (const char*) ssid << "', mac '" << (const char*) mac.toString() << "'" << oendl;
597 597
598 QListViewItemIterator it( netView ); 598 QListViewItemIterator it( netView );
599 while ( it.current() && it.current()->text( col_ssid ) != ssid ) ++it; 599 while ( it.current() && it.current()->text( col_ssid ) != ssid ) ++it;
600 if ( !it.current() ) // ssid didn't show up yet 600 if ( !it.current() ) // ssid didn't show up yet
601 { 601 {
602 QListViewItem* item = new QListViewItem( netView, mode.left( 1 ).upper(), ssid, QString::number( channel ), mac.toString() ); 602 QListViewItem* item = new QListViewItem( netView, mode.left( 1 ).upper(), ssid, QString::number( channel ), mac.toString() );
603 QString name; 603 QString name;
604 name.sprintf( "networksettings/%s", (const char*) mode ); 604 name.sprintf( "networksettings/%s", (const char*) mode );
605 item->setPixmap( col_mode, Resource::loadPixmap( name ) ); 605 item->setPixmap( col_mode, Opie::Core::OResource::loadPixmap( name, Opie::Core::OResource::SmallIcon ) );
606 qApp->processEvents(); 606 qApp->processEvents();
607 } 607 }
608 608
609} 609}
610 610
611 611
612void WLANImp::selectNetwork( QListViewItem* item ) 612void WLANImp::selectNetwork( QListViewItem* item )
613{ 613{
614 bool ok; 614 bool ok;
615 if ( item ) 615 if ( item )
616 { 616 {
617 specifyAp->setChecked(true); 617 specifyAp->setChecked(true);
618 macEdit->setText( item->text( col_mac ) ); 618 macEdit->setText( item->text( col_mac ) );
619 specifyChan->setChecked( item->text( col_mode ) == "A" ); 619 specifyChan->setChecked( item->text( col_mode ) == "A" );
620 networkChannel->setValue( item->text( col_chn ).toInt( &ok ) ); 620 networkChannel->setValue( item->text( col_chn ).toInt( &ok ) );
621 essid->setEditText( item->text( col_ssid ) ); 621 essid->setEditText( item->text( col_ssid ) );
622 if ( item->text( col_mode ) == "A" ) 622 if ( item->text( col_mode ) == "A" )
623 mode->setCurrentItem( 3 ); 623 mode->setCurrentItem( 3 );
624 else 624 else
625 mode->setCurrentItem( 2 ); 625 mode->setCurrentItem( 2 );
626 } 626 }
627} 627}