-rw-r--r-- | noncore/applets/wirelessapplet/wireless.cpp | 74 |
1 files changed, 40 insertions, 34 deletions
diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp index 72ac380..cee789c 100644 --- a/noncore/applets/wirelessapplet/wireless.cpp +++ b/noncore/applets/wirelessapplet/wireless.cpp | |||
@@ -47,14 +47,14 @@ | |||
47 | #include <sys/types.h> | 47 | #include <sys/types.h> |
48 | #include <signal.h> | 48 | #include <signal.h> |
49 | 49 | ||
50 | #define STYLE_BARS 0 | 50 | #define STYLE_BARS 0 |
51 | #define STYLE_ANTENNA 1 | 51 | #define STYLE_ANTENNA 1 |
52 | 52 | ||
53 | #define MDEBUG | 53 | //#define MDEBUG |
54 | //#undef MDEBUG | 54 | #undef MDEBUG |
55 | 55 | ||
56 | WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) | 56 | WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) |
57 | : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) | 57 | : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) |
58 | { | 58 | { |
59 | 59 | ||
60 | readConfig(); | 60 | readConfig(); |
@@ -216,12 +216,13 @@ WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) | |||
216 | } | 216 | } |
217 | 217 | ||
218 | void WirelessApplet::checkInterface() | 218 | void WirelessApplet::checkInterface() |
219 | { | 219 | { |
220 | interface = 0L; | 220 | interface = 0L; |
221 | ONetwork* net = ONetwork::instance(); | 221 | ONetwork* net = ONetwork::instance(); |
222 | net->synchronize(); | ||
222 | ONetwork::InterfaceIterator it = net->iterator(); | 223 | ONetwork::InterfaceIterator it = net->iterator(); |
223 | 224 | ||
224 | while ( it.current() && !it.current()->isWireless() ) ++it; | 225 | while ( it.current() && !it.current()->isWireless() ) ++it; |
225 | 226 | ||
226 | if ( it.current() && it.current()->isWireless() ) | 227 | if ( it.current() && it.current()->isWireless() ) |
227 | interface = static_cast<OWirelessNetworkInterface*>( it.current() ); | 228 | interface = static_cast<OWirelessNetworkInterface*>( it.current() ); |
@@ -321,20 +322,32 @@ void WirelessApplet::displayStyleChange( int style ) | |||
321 | 322 | ||
322 | WirelessApplet::~WirelessApplet() | 323 | WirelessApplet::~WirelessApplet() |
323 | {} | 324 | {} |
324 | 325 | ||
325 | void WirelessApplet::timerEvent( QTimerEvent* ) | 326 | void WirelessApplet::timerEvent( QTimerEvent* ) |
326 | { | 327 | { |
328 | #ifdef MDEBUG | ||
327 | qDebug( "WirelessApplet::timerEvent" ); | 329 | qDebug( "WirelessApplet::timerEvent" ); |
328 | OWirelessNetworkInterface* iface = interface; | 330 | #endif |
329 | 331 | if ( interface ) | |
330 | if ( iface ) | ||
331 | { | 332 | { |
333 | if ( !ONetwork::instance()->isPresent( (const char*) interface->name() ) ) | ||
334 | { | ||
335 | #ifdef MDEBUG | ||
336 | qDebug( "WIFIAPPLET: Interface no longer present." ); | ||
337 | #endif | ||
338 | interface = 0L; | ||
339 | mustRepaint(); | ||
340 | return; | ||
341 | } | ||
342 | |||
332 | if ( mustRepaint() ) | 343 | if ( mustRepaint() ) |
333 | { | 344 | { |
345 | #ifdef MDEBUG | ||
334 | qDebug( "WIFIAPPLET: A value has changed -> repainting." ); | 346 | qDebug( "WIFIAPPLET: A value has changed -> repainting." ); |
347 | #endif | ||
335 | repaint(); | 348 | repaint(); |
336 | } | 349 | } |
337 | 350 | ||
338 | if ( status->isVisible() ) | 351 | if ( status->isVisible() ) |
339 | { | 352 | { |
340 | updatePopupWindow(); | 353 | updatePopupWindow(); |
@@ -353,22 +366,20 @@ void WirelessApplet::mousePressEvent( QMouseEvent * ) | |||
353 | else | 366 | else |
354 | status->show( true ); | 367 | status->show( true ); |
355 | } | 368 | } |
356 | 369 | ||
357 | bool WirelessApplet::mustRepaint() | 370 | bool WirelessApplet::mustRepaint() |
358 | { | 371 | { |
359 | OWirelessNetworkInterface* iface = interface; | ||
360 | |||
361 | // check if there are enough changes to justify a (flickering) repaint | 372 | // check if there are enough changes to justify a (flickering) repaint |
362 | 373 | ||
363 | // has the interface changed? | 374 | // has the interface changed? |
364 | 375 | ||
365 | if ( iface != oldiface ) | 376 | if ( interface != oldiface ) |
366 | { | 377 | { |
367 | oldiface = iface; | 378 | oldiface = interface; |
368 | if ( iface ) | 379 | if ( interface ) |
369 | { | 380 | { |
370 | #ifdef MDEBUG | 381 | #ifdef MDEBUG |
371 | qDebug( "WIFIAPPLET: We had no interface but now we have one! :-)" ); | 382 | qDebug( "WIFIAPPLET: We had no interface but now we have one! :-)" ); |
372 | #endif | 383 | #endif |
373 | show(); | 384 | show(); |
374 | } | 385 | } |
@@ -388,86 +399,83 @@ bool WirelessApplet::mustRepaint() | |||
388 | { | 399 | { |
389 | oldpixmap = pixmap; | 400 | oldpixmap = pixmap; |
390 | return true; | 401 | return true; |
391 | } | 402 | } |
392 | 403 | ||
393 | int noiseH = 50; // iface->noisePercent() * ( height() - 3 ) / 100; | 404 | int noiseH = 50; // iface->noisePercent() * ( height() - 3 ) / 100; |
394 | int signalH = iface->signalStrength() * ( height() - 3 ) / 100; | 405 | int signalH = interface->signalStrength() * ( height() - 3 ) / 100; |
395 | int qualityH = 50; // iface->qualityPercent() * ( height() - 3 ) / 100; | 406 | int qualityH = 50; // iface->qualityPercent() * ( height() - 3 ) / 100; |
396 | 407 | ||
397 | if ( ( noiseH != oldnoiseH ) | 408 | if ( ( noiseH != oldnoiseH ) |
398 | || ( signalH != oldsignalH ) | 409 | || ( signalH != oldsignalH ) |
399 | || ( qualityH != oldqualityH ) ) | 410 | || ( qualityH != oldqualityH ) ) |
400 | { | 411 | { |
401 | oldnoiseH = noiseH; | 412 | oldnoiseH = noiseH; |
402 | oldsignalH = signalH; | 413 | oldsignalH = signalH; |
403 | oldqualityH = qualityH; | 414 | oldqualityH = qualityH; |
404 | return true; | 415 | return true; |
405 | } | 416 | } |
406 | 417 | ||
407 | if ( rocESSID && ( oldESSID != iface->SSID() ) ) | 418 | if ( rocESSID && ( oldESSID != interface->SSID() ) ) |
408 | { | 419 | { |
409 | #ifdef MDEBUG | 420 | #ifdef MDEBUG |
410 | qDebug( "WIFIAPPLET: ESSID has changed." ); | 421 | qDebug( "WIFIAPPLET: ESSID has changed." ); |
411 | #endif | 422 | #endif |
412 | renewDHCP(); | 423 | renewDHCP(); |
413 | } | 424 | } |
414 | else if ( rocFREQ && ( oldFREQ != iface->frequency() ) ) | 425 | else if ( rocFREQ && ( oldFREQ != interface->frequency() ) ) |
415 | { | 426 | { |
416 | #ifdef MDEBUG | 427 | #ifdef MDEBUG |
417 | qDebug( "WIFIAPPLET: FREQ has changed." ); | 428 | qDebug( "WIFIAPPLET: FREQ has changed." ); |
418 | #endif | 429 | #endif |
419 | renewDHCP(); | 430 | renewDHCP(); |
420 | } | 431 | } |
421 | else if ( rocAP && ( oldAP != iface->associatedAP().toString() ) ) | 432 | else if ( rocAP && ( oldAP != interface->associatedAP().toString() ) ) |
422 | { | 433 | { |
423 | #ifdef MDEBUG | 434 | #ifdef MDEBUG |
424 | qDebug( "WIFIAPPLET: AP has changed." ); | 435 | qDebug( "WIFIAPPLET: AP has changed." ); |
425 | #endif | 436 | #endif |
426 | renewDHCP(); | 437 | renewDHCP(); |
427 | } | 438 | } |
428 | else if ( rocMODE && ( oldMODE != iface->mode() ) ) | 439 | else if ( rocMODE && ( oldMODE != interface->mode() ) ) |
429 | { | 440 | { |
430 | #ifdef MDEBUG | 441 | #ifdef MDEBUG |
431 | qDebug( "WIFIAPPLET: MODE has changed." ); | 442 | qDebug( "WIFIAPPLET: MODE has changed." ); |
432 | #endif | 443 | #endif |
433 | renewDHCP(); | 444 | renewDHCP(); |
434 | } | 445 | } |
435 | 446 | ||
436 | oldESSID = iface->SSID(); | 447 | oldESSID = interface->SSID(); |
437 | oldMODE = iface->mode(); | 448 | oldMODE = interface->mode(); |
438 | oldFREQ = iface->frequency(); | 449 | oldFREQ = interface->frequency(); |
439 | oldAP = iface->associatedAP().toString(); | 450 | oldAP = interface->associatedAP().toString(); |
440 | 451 | ||
441 | return false; | 452 | return false; |
442 | } | 453 | } |
443 | 454 | ||
444 | void WirelessApplet::updatePopupWindow() | 455 | void WirelessApplet::updatePopupWindow() |
445 | { | 456 | { |
446 | OWirelessNetworkInterface* iface = interface; | 457 | int qualityH = interface->signalStrength(); |
447 | int qualityH = iface->signalStrength(); | ||
448 | 458 | ||
449 | if ( status->mgraph ) | 459 | if ( status->mgraph ) |
450 | status->mgraph->addValue( qualityH, false ); | 460 | status->mgraph->addValue( qualityH, false ); |
451 | 461 | ||
452 | QString freqString; | 462 | QString freqString; |
453 | QString cell = ( iface->mode() == "Managed" ) ? "AP: " : "Cell: "; | 463 | QString cell = ( interface->mode() == "Managed" ) ? "AP: " : "Cell: "; |
454 | freqString.sprintf( "%.3f GHz", iface->frequency() ); | 464 | freqString.sprintf( "%.3f GHz", interface->frequency() ); |
455 | status->statusLabel->setText( "Station: " + iface->nickName() + "<br>" + | 465 | status->statusLabel->setText( "Station: " + interface->nickName() + "<br>" + |
456 | "ESSID: " + iface->SSID() + "<br>" + | 466 | "ESSID: " + interface->SSID() + "<br>" + |
457 | "MODE: " + iface->mode() + "<br>" + | 467 | "MODE: " + interface->mode() + "<br>" + |
458 | "FREQ: " + freqString + "<br>" + | 468 | "FREQ: " + freqString + "<br>" + |
459 | cell + " " + iface->associatedAP().toString() ); | 469 | cell + " " + interface->associatedAP().toString() ); |
460 | } | 470 | } |
461 | 471 | ||
462 | const char** WirelessApplet::getQualityPixmap() | 472 | const char** WirelessApplet::getQualityPixmap() |
463 | { | 473 | { |
464 | OWirelessNetworkInterface* iface = interface; | 474 | if ( !interface ) return ( const char** ) nowireless_xpm; |
465 | 475 | int qualityH = interface->signalStrength(); | |
466 | if ( !iface ) return ( const char** ) nowireless_xpm; | ||
467 | int qualityH = iface->signalStrength(); | ||
468 | if ( qualityH < 0 ) return ( const char** ) nowireless_xpm; | 476 | if ( qualityH < 0 ) return ( const char** ) nowireless_xpm; |
469 | 477 | ||
470 | if ( visualStyle == STYLE_ANTENNA ) | 478 | if ( visualStyle == STYLE_ANTENNA ) |
471 | { | 479 | { |
472 | if ( qualityH < 1 ) return ( const char** ) connect0_xpm; | 480 | if ( qualityH < 1 ) return ( const char** ) connect0_xpm; |
473 | if ( qualityH < 17 ) return ( const char** ) connect1_xpm; | 481 | if ( qualityH < 17 ) return ( const char** ) connect1_xpm; |
@@ -479,27 +487,25 @@ const char** WirelessApplet::getQualityPixmap() | |||
479 | 487 | ||
480 | return 0; // please draw your bars | 488 | return 0; // please draw your bars |
481 | } | 489 | } |
482 | 490 | ||
483 | void WirelessApplet::paintEvent( QPaintEvent* ) | 491 | void WirelessApplet::paintEvent( QPaintEvent* ) |
484 | { | 492 | { |
485 | OWirelessNetworkInterface* iface = interface; | ||
486 | |||
487 | QPainter p( this ); | 493 | QPainter p( this ); |
488 | QColor color; | 494 | QColor color; |
489 | 495 | ||
490 | const char** pixmap = getQualityPixmap(); | 496 | const char** pixmap = getQualityPixmap(); |
491 | 497 | ||
492 | if ( pixmap ) | 498 | if ( pixmap ) |
493 | p.drawPixmap( 0, 1, pixmap ); | 499 | p.drawPixmap( 0, 1, pixmap ); |
494 | else | 500 | else |
495 | { | 501 | { |
496 | 502 | ||
497 | int noiseH = 30; // iface->noisePercent() * ( height() - 3 ) / 100; | 503 | int noiseH = 30; // iface->noisePercent() * ( height() - 3 ) / 100; |
498 | int signalH = 50; // iface->signalPercent() * ( height() - 3 ) / 100; | 504 | int signalH = 50; // iface->signalPercent() * ( height() - 3 ) / 100; |
499 | int qualityH = iface->signalStrength(); // iface->qualityPercent() * ( height() - 3 ) / 100; | 505 | int qualityH = interface->signalStrength(); // iface->qualityPercent() * ( height() - 3 ) / 100; |
500 | 506 | ||
501 | double intensity; | 507 | double intensity; |
502 | int pixelHeight; | 508 | int pixelHeight; |
503 | int pixelWidth = 2; | 509 | int pixelWidth = 2; |
504 | int Hue; | 510 | int Hue; |
505 | int barSpace = 3; | 511 | int barSpace = 3; |