summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opiestumbler/opiestumbler.cpp55
-rw-r--r--noncore/net/opiestumbler/opiestumbler.h11
2 files changed, 57 insertions, 9 deletions
diff --git a/noncore/net/opiestumbler/opiestumbler.cpp b/noncore/net/opiestumbler/opiestumbler.cpp
index f231fca..bc4a7ab 100644
--- a/noncore/net/opiestumbler/opiestumbler.cpp
+++ b/noncore/net/opiestumbler/opiestumbler.cpp
@@ -1,77 +1,78 @@
1#include <cstdlib> 1#include <cstdlib>
2 2
3#include <qmenubar.h> 3#include <qmenubar.h>
4#include <qaction.h> 4#include <qaction.h>
5#include <qlistview.h> 5#include <qlistview.h>
6#include <qstring.h> 6#include <qstring.h>
7//#include <qapplication.h> 7//#include <qapplication.h>
8#include <qdatetime.h> 8#include <qdatetime.h>
9#include <qpopupmenu.h> 9#include <qpopupmenu.h>
10#include <qstatusbar.h> 10#include <qstatusbar.h>
11#include <qlayout.h> 11#include <qlayout.h>
12#include <qwhatsthis.h> 12#include <qwhatsthis.h>
13#include <qtimer.h> 13#include <qtimer.h>
14#include <qprogressbar.h>
14 15
15#include <qpe/resource.h> 16#include <qpe/resource.h>
16#include <qpe/config.h> 17#include <qpe/config.h>
17//#include <qpe/global.h> 18//#include <qpe/global.h>
18#include <qpe/qcopenvelope_qws.h> 19#include <qpe/qcopenvelope_qws.h>
19#include <qpe/qpeapplication.h> 20#include <qpe/qpeapplication.h>
20 21
21#include <opie2/odebug.h> 22#include <opie2/odebug.h>
22#include <opie2/ostation.h> 23#include <opie2/ostation.h>
23#include <opie2/omanufacturerdb.h> 24#include <opie2/omanufacturerdb.h>
24#include <opie2/onetwork.h> 25#include <opie2/onetwork.h>
25#include <opie2/oprocess.h> 26#include <opie2/oprocess.h>
26 27
27#include "stumbler.h" 28#include "stumbler.h"
28#include "opiestumbler.h" 29#include "opiestumbler.h"
29#include "stumblersettings.h" 30#include "stumblersettings.h"
30#include "stationviewitem.h" 31#include "stationviewitem.h"
31#include "stumblerstation.h" 32#include "stumblerstation.h"
32#include "stationinfo.h" 33#include "stationinfo.h"
33 34
34 35
35using Opie::Net::OWirelessNetworkInterface; 36using Opie::Net::OWirelessNetworkInterface;
36using Opie::Net::ONetwork; 37using Opie::Net::ONetwork;
37 38
38 39
39QString OpieStumbler::appCaption() { 40QString OpieStumbler::appCaption() {
40 return QObject::tr("OpieStumbler"); 41 return QObject::tr("OpieStumbler");
41} 42}
42 43
43OpieStumbler::OpieStumbler(QWidget *parent, const char *name, WFlags) 44OpieStumbler::OpieStumbler(QWidget *parent, const char *name, WFlags)
44 :QMainWindow(parent, name, WStyle_ContextHelp), 45 :QMainWindow(parent, name, WStyle_ContextHelp),
45 m_listCurrent(new QListView(this)), m_listHistory(new QListView(this)), 46 m_listCurrent(new QListView(this)), m_listHistory(new QListView(this)),
46 m_stationsCurrent(new QList<Opie::Net::OStation>), 47 m_stationsCurrent(new QList<Opie::Net::OStation>),
47 m_popupCurrent(new QPopupMenu(this)), 48 m_popupCurrent(new QPopupMenu(this)),
48 m_popupHistory(new QPopupMenu(this)), 49 m_popupHistory(new QPopupMenu(this)),
49 m_db(NULL), m_proc(NULL) 50 m_db(NULL), m_proc(NULL)
50{ 51{
51 52
52 if ( QCopChannel::isRegistered("QPE/OpieStumbler") ) { 53 if ( QCopChannel::isRegistered("QPE/OpieStumbler") ) {
53 QCopEnvelope e("QPE/OpieStumbler", "show()"); 54 QCopEnvelope e("QPE/OpieStumbler", "show()");
54 exit(EXIT_SUCCESS); 55 exit(EXIT_SUCCESS);
55 } 56 }
56 57
57 QGridLayout *grid = new QGridLayout( this, 1, 1, 3, 0, "grid"); 58 QGridLayout *grid = new QGridLayout( this, 1, 1, 3, 0, "grid");
58 QVBoxLayout *lay = new QVBoxLayout( NULL, 0, 5, "lay" ); 59 QVBoxLayout *lay = new QVBoxLayout( NULL, 0, 5, "lay" );
59 QSpacerItem *spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Fixed ); 60 QSpacerItem *spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Fixed );
60 lay->addItem(spacer); 61 lay->addItem(spacer);
61 lay->addWidget(m_listCurrent); 62 lay->addWidget(m_listCurrent);
62 lay->addWidget(m_listHistory); 63 lay->addWidget(m_listHistory);
63 grid->addLayout(lay, 0, 0); 64 grid->addLayout(lay, 0, 0);
64 65
65 m_stationsCurrent->setAutoDelete(TRUE); 66 m_stationsCurrent->setAutoDelete(TRUE);
66 67
67 m_channel = new QCopChannel( "QPE/OpieStumbler", this ); 68 m_channel = new QCopChannel( "QPE/OpieStumbler", this );
68 connect(m_channel, SIGNAL(received(const QCString &, const QByteArray &)), 69 connect(m_channel, SIGNAL(received(const QCString &, const QByteArray &)),
69 this, SLOT(slotMessageReceived( const QCString &, const QByteArray &)) ); 70 this, SLOT(slotMessageReceived( const QCString &, const QByteArray &)) );
70 71
71 //setCaption(appCaption()); 72 //setCaption(appCaption());
72 //setCentralWidget(grid); 73 //setCentralWidget(grid);
73 setToolBarsMovable(FALSE); 74 setToolBarsMovable(FALSE);
74 75
75 76
76 QPopupMenu *fileMenu = new QPopupMenu(this); 77 QPopupMenu *fileMenu = new QPopupMenu(this);
77 QPopupMenu *configMenu = new QPopupMenu(this); 78 QPopupMenu *configMenu = new QPopupMenu(this);
@@ -214,135 +215,171 @@ void OpieStumbler::slotCurrentMousePressed(int button, QListViewItem * item, con
214} 215}
215 216
216 217
217void OpieStumbler::slotHistoryMousePressed(int button, QListViewItem * item, const QPoint &point, int c) 218void OpieStumbler::slotHistoryMousePressed(int button, QListViewItem * item, const QPoint &point, int c)
218{ 219{
219 Q_UNUSED(c) 220 Q_UNUSED(c)
220 221
221 if ( 2 == button ) { 222 if ( 2 == button ) {
222 m_mac = item->text(HISVENDOR + 1); 223 m_mac = item->text(HISVENDOR + 1);
223 m_popupHistory->popup(point); 224 m_popupHistory->popup(point);
224 } 225 }
225} 226}
226 227
227void OpieStumbler::slotShowDetails() 228void OpieStumbler::slotShowDetails()
228{ 229{
229 QListIterator<StumblerStation> it(m_stationsHistory); 230 QListIterator<StumblerStation> it(m_stationsHistory);
230 for(; it.current() && it.current()->st->macAddress.toString() != m_mac; ++it ); 231 for(; it.current() && it.current()->st->macAddress.toString() != m_mac; ++it );
231 232
232 if( it.current() ) { 233 if( it.current() ) {
233 StationInfo info(it.current()->st->ssid, it.current()->st->type, QString::number(it.current()->st->channel), 234 StationInfo info(it.current()->st->ssid, it.current()->st->type, QString::number(it.current()->st->channel),
234 QString::number(it.current()->st->rates.last()/1000000), QString::number(it.current()->st->level), 235 QString::number(it.current()->st->rates.last()/1000000), QString::number(it.current()->st->level),
235 it.current()->st->encrypted ? "WEP": "No", 236 it.current()->st->encrypted ? "WEP": "No",
236 it.current()->st->macAddress.toString(), manufacturer(it.current()->st->macAddress.toString(), TRUE), 237 it.current()->st->macAddress.toString(), manufacturer(it.current()->st->macAddress.toString(), TRUE),
237 it.current()->lastTimeSeen.toString() ,this, "", TRUE); 238 it.current()->lastTimeSeen.toString() ,this, "", TRUE);
238 info.exec(); 239 info.exec();
239 } 240 }
240 241
241} 242}
242 243
243void OpieStumbler::slotLoadManufacturers() 244void OpieStumbler::slotLoadManufacturers()
244{ 245{
245 m_db = Opie::Net::OManufacturerDB::instance(); 246 m_db = Opie::Net::OManufacturerDB::instance();
246} 247}
247 248
248QString OpieStumbler::manufacturer( const QString &mac, bool extended ) 249QString OpieStumbler::manufacturer( const QString &mac, bool extended )
249{ 250{
250 QString retval; 251 QString retval;
251 if ( m_db ) 252 if ( m_db )
252 if ( extended ) 253 if ( extended )
253 retval = m_db->lookupExt(mac); 254 retval = m_db->lookupExt(mac);
254 else 255 else
255 retval = m_db->lookup(mac); 256 retval = m_db->lookup(mac);
256 257
257 if ( retval.isEmpty() ) 258 if ( retval.isEmpty() )
258 retval = tr("Unknown"); 259 retval = tr("Unknown");
259 260
260 return retval; 261 return retval;
261} 262}
262 263
263void OpieStumbler::slotJoinNetwork() 264void OpieStumbler::slotJoinNetwork()
264{ 265{
265 slotStopScanning(); 266 slotStopScanning();
266 267
267 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface)); 268 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
268 269
269 if( !wiface ) 270 if( !wiface )
270 return; 271 return;
271 272
272 QListIterator<StumblerStation> it(m_stationsHistory); 273 QListIterator<StumblerStation> it(m_stationsHistory);
273 274
274 for(; it.current() && it.current()->st->macAddress.toString() != m_mac; ++it ); 275 for(; it.current() && it.current()->st->macAddress.toString() != m_mac; ++it );
275 276
276 if( !it.current() ) 277 if( !it.current() )
277 return; 278 return;
278 279
280 m_ssid = it.current()->st->ssid.left(it.current()->st->ssid.length()-1);
281 m_splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize );
282 m_splash->setFrameStyle( QFrame::Panel | QFrame::Raised );
283 m_splashBox = new QVBoxLayout( m_splash, 4, 4 );
284 m_infoLabel = new QLabel( QString("<center><b>%1 %2</b></center>").arg(tr("Joining Network")).arg(m_ssid), m_splash );
285 m_pbar = new QProgressBar( 3, m_splash );
286 m_pbar->setCenterIndicator(true);
287 m_splashBox->addWidget( m_infoLabel );
288 m_splashBox->addWidget( m_pbar );
289 int sw = m_splashBox->sizeHint().width()*2;
290 int sh = m_splashBox->sizeHint().height();
291 m_splash->setGeometry((240-(sw))/2, (320-sh)/2, sw, sh);
292 m_splash->show();
293 m_splash->raise();
294
279 Opie::Net::OStation *station = it.current()->st; 295 Opie::Net::OStation *station = it.current()->st;
280 296
281 odebug << "Bringing interface down" << oendl; 297 odebug << "Bringing interface down" << oendl;
282 wiface->setUp(FALSE); 298 wiface->setUp(FALSE);
283 299
284 odebug << "Setting mode to " << (station->type == "adhoc" ? "adhoc" : "managed") << oendl; 300 odebug << "Setting mode to " << (station->type == "adhoc" ? "adhoc" : "managed") << oendl;
285 wiface->setMode(station->type == "adhoc" ? "adhoc" : "managed" ); 301 wiface->setMode(station->type == "adhoc" ? "adhoc" : "managed" );
286 302
287 odebug << "Setting channel to " << station->channel << oendl; 303 odebug << "Setting channel to " << station->channel << oendl;
288 wiface->setChannel(station->channel); 304 wiface->setChannel(station->channel);
289 305
290 odebug << "Setting SSID to " << station->ssid << oendl; 306 odebug << "Setting SSID to " << station->ssid << oendl;
291 wiface->setSSID(station->ssid); 307 wiface->setSSID(station->ssid);
292 308
293 wiface->commit(); 309 wiface->commit();
294 310
295 odebug << "Bringing interface up" << oendl; 311 odebug << "Bringing interface up" << oendl;
296 wiface->setUp(TRUE); 312 wiface->setUp(TRUE);
313 m_pbar->setProgress(1);
297 //Wait 5 sec for association 314 //Wait 5 sec for association
298 QTimer::singleShot(5000, this, SLOT(slotAssociated())); 315 QTimer::singleShot(5000, this, SLOT(slotAssociated()));
299} 316}
300 317
301void OpieStumbler::slotAssociated() 318void OpieStumbler::slotAssociated()
302{ 319{
303 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface)); 320 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
304 321
305 if( !wiface ) 322 if( !wiface ) {
323 slotCleanSplash();
306 return; 324 return;
325 }
307 326
308 if (!wiface->isAssociated()) { 327 if (!wiface->isAssociated()) {
309 Global::statusMessage(tr("Could not Join")); 328 Global::statusMessage(tr("Could not Join"));
329 m_infoLabel->setText(tr("Could not Join"));
330 QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
310 return; 331 return;
311 } 332 }
312 333
313 Global::statusMessage(tr("Joined")); 334 Global::statusMessage(tr("Joined"));
335 m_pbar->setProgress(2);
336 m_infoLabel->setText(QString("<center><b>%1 %2</b></center>").arg(tr("Joined Network")).arg(m_ssid));
314 337
315 if(m_proc) { 338 if(m_proc) {
316 m_proc->kill(); 339 m_proc->kill();
317 delete m_proc; 340 delete m_proc;
318 } 341 }
319 342
320 m_proc = new Opie::Core::OProcess(this); 343 m_proc = new Opie::Core::OProcess(this);
321 344
322 *m_proc << "udhcpc" << "-f" << "-n" << "-i" << m_interface; 345 *m_proc << "udhcpc" << "-f" << "-n" << "-i" << m_interface;
323 m_proc->start(Opie::Core::OProcess::DontCare); 346 m_proc->start(Opie::Core::OProcess::DontCare);
324 QTimer::singleShot(5000, this, SLOT(slotCheckDHCP())); 347 QTimer::singleShot(5000, this, SLOT(slotCheckDHCP()));
325} 348}
326 349
327void OpieStumbler::slotCheckDHCP() 350void OpieStumbler::slotCheckDHCP()
328{ 351{
329 if(!m_proc->isRunning()) { 352 if(!m_proc->isRunning()) {
330 Global::statusMessage(tr("Could not Obtain an Address")); 353 Global::statusMessage(tr("Could not Obtain an Address"));
354 m_infoLabel->setText(QString("<center><b>%1</b></center>").arg(tr("Could not Obtain an Address")));
331 delete m_proc; 355 delete m_proc;
332 m_proc = NULL; 356 m_proc = NULL;
357 QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
333 return; 358 return;
334 } 359 }
335 m_listCurrent->show(); 360 m_listCurrent->show();
361 m_pbar->setProgress(3);
336 362
337
338 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface)); 363 OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
339 Global::statusMessage(tr("Obtained IP ") + wiface->ipV4Address().toString()); 364 QString ipv4 = wiface->ipV4Address().toString();
365 m_infoLabel->setText(QString("<center><b>%1 %2</b></center>").arg(tr("Obtained IP")).arg(ipv4));
366 Global::statusMessage(tr("Obtained IP") + " " + ipv4);
367 QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
368
340} 369}
341 370
371void OpieStumbler::slotCleanSplash()
372{
373 delete m_pbar;
374 m_pbar = 0;
342 375
376 delete m_infoLabel;
377 m_infoLabel = 0;
343 378
344 379 delete m_splashBox;
345 380 m_splashBox = 0;
346 381
347 382 delete m_splash;
383 m_splash = 0;
384}
348 385
diff --git a/noncore/net/opiestumbler/opiestumbler.h b/noncore/net/opiestumbler/opiestumbler.h
index 3f45a78..84a69ba 100644
--- a/noncore/net/opiestumbler/opiestumbler.h
+++ b/noncore/net/opiestumbler/opiestumbler.h
@@ -1,70 +1,81 @@
1#ifndef OPIESTUMBLER_H 1#ifndef OPIESTUMBLER_H
2#define OPIESTUMBLER_H 2#define OPIESTUMBLER_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qlist.h> 5#include <qlist.h>
6 6
7#include "stumblerstation.h" 7#include "stumblerstation.h"
8 8
9class QString; 9class QString;
10class QPopupMenu; 10class QPopupMenu;
11class Stumbler; 11class Stumbler;
12class QCopChannel; 12class QCopChannel;
13class QListView; 13class QListView;
14class QListViewItem; 14class QListViewItem;
15class QFrame;
16class QLabel;
17class QProgressBar;
18class QVBoxLayout;
15 19
16namespace Opie{ 20namespace Opie{
17 namespace Net { 21 namespace Net {
18 class OMacAddress; 22 class OMacAddress;
19 class OStation; 23 class OStation;
20 class OManufacturerDB; 24 class OManufacturerDB;
21 } 25 }
22 26
23 namespace Core { 27 namespace Core {
24 class OProcess; 28 class OProcess;
25 } 29 }
26} 30}
27 31
28 32
29class OpieStumbler: public QMainWindow { 33class OpieStumbler: public QMainWindow {
30 Q_OBJECT 34 Q_OBJECT
31public: 35public:
32 36
33 enum CurrentColumns { CURSSID, CURCHAN, CURSIGNAL, CURENC }; 37 enum CurrentColumns { CURSSID, CURCHAN, CURSIGNAL, CURENC };
34 enum HistoryColumns { HISSSID, HISCHAN, HISSIGNAL, HISENC, HISVENDOR }; 38 enum HistoryColumns { HISSSID, HISCHAN, HISSIGNAL, HISENC, HISVENDOR };
35 OpieStumbler(QWidget *parent = 0, const char *name = 0, WFlags f = 0); 39 OpieStumbler(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
36 static QString appName() { return QString::fromLatin1("opiestumbler"); } 40 static QString appName() { return QString::fromLatin1("opiestumbler"); }
37 static QString appCaption(); 41 static QString appCaption();
38 void displayStations(); 42 void displayStations();
39 QString manufacturer(const QString &mac, bool extended = FALSE ); 43 QString manufacturer(const QString &mac, bool extended = FALSE );
40protected slots: 44protected slots:
41 void slotConfigure(); 45 void slotConfigure();
42 void slotStartScanning(); 46 void slotStartScanning();
43 void slotStopScanning(); 47 void slotStopScanning();
44 void slotUpdateStations(); 48 void slotUpdateStations();
45 void slotMessageReceived( const QCString &, const QByteArray & ); 49 void slotMessageReceived( const QCString &, const QByteArray & );
46 void slotCurrentMousePressed(int button, QListViewItem *item, const QPoint &point, int c); 50 void slotCurrentMousePressed(int button, QListViewItem *item, const QPoint &point, int c);
47 void slotHistoryMousePressed(int button, QListViewItem *item, const QPoint &point, int c); 51 void slotHistoryMousePressed(int button, QListViewItem *item, const QPoint &point, int c);
48 void slotShowDetails(); 52 void slotShowDetails();
49 void slotLoadManufacturers(); 53 void slotLoadManufacturers();
50 void slotJoinNetwork(); 54 void slotJoinNetwork();
51 void slotAssociated(); 55 void slotAssociated();
52 void slotCheckDHCP(); 56 void slotCheckDHCP();
57 void slotCleanSplash();
53protected: 58protected:
54 void loadConfig(); 59 void loadConfig();
60
55 QListView *m_listCurrent; 61 QListView *m_listCurrent;
56 QListView *m_listHistory; 62 QListView *m_listHistory;
57 QString m_interface; 63 QString m_interface;
58 Stumbler *m_stumbler; 64 Stumbler *m_stumbler;
59 QCopChannel *m_channel; 65 QCopChannel *m_channel;
60 QList <Opie::Net::OStation> *m_stationsCurrent; 66 QList <Opie::Net::OStation> *m_stationsCurrent;
61 QList <StumblerStation> m_stationsHistory; 67 QList <StumblerStation> m_stationsHistory;
62 QPopupMenu *m_popupCurrent; 68 QPopupMenu *m_popupCurrent;
63 QPopupMenu *m_popupHistory; 69 QPopupMenu *m_popupHistory;
64 Opie::Net::OManufacturerDB *m_db; 70 Opie::Net::OManufacturerDB *m_db;
65 QString m_mac; 71 QString m_mac;
72 QString m_ssid;
66 Opie::Core::OProcess *m_proc; 73 Opie::Core::OProcess *m_proc;
74 QFrame *m_splash;
75 QVBoxLayout *m_splashBox;
76 QLabel *m_infoLabel;
77 QProgressBar *m_pbar;
67 78
68}; 79};
69 80
70#endif /* OPIESTUMBLER_H */ 81#endif /* OPIESTUMBLER_H */