author | mickeyl <mickeyl> | 2002-08-31 10:43:26 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2002-08-31 10:43:26 (UTC) |
commit | cd33eed8d5eccebdc37dcd0e30d7917b91765222 (patch) (side-by-side diff) | |
tree | cec3d088b58501bcc660686f468c4a968dc2d729 | |
parent | 3b720187b21a3b9b3d17fc2b26489723febdaec2 (diff) | |
download | opie-cd33eed8d5eccebdc37dcd0e30d7917b91765222.zip opie-cd33eed8d5eccebdc37dcd0e30d7917b91765222.tar.gz opie-cd33eed8d5eccebdc37dcd0e30d7917b91765222.tar.bz2 |
- debug output is now #ifdef'd
- wireless applet icon shows on demand (like cardmon
- applet has an advanced configuration dialog
- applet features experimental dhcp renew on change of essid/freq/ap/mode
-rw-r--r-- | noncore/applets/wirelessapplet/advancedconfig.cpp | 55 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/advancedconfig.h | 36 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/advancedconfigbase.ui | 159 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/networkinfo.cpp | 30 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/networkinfo.h | 4 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/wireless.cpp | 149 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/wireless.h | 18 | ||||
-rw-r--r-- | noncore/applets/wirelessapplet/wirelessapplet.pro | 7 |
8 files changed, 432 insertions, 26 deletions
diff --git a/noncore/applets/wirelessapplet/advancedconfig.cpp b/noncore/applets/wirelessapplet/advancedconfig.cpp new file mode 100644 index 0000000..97b008d --- a/dev/null +++ b/noncore/applets/wirelessapplet/advancedconfig.cpp @@ -0,0 +1,55 @@ +/********************************************************************** +** Copyright (C) 2002 Michael 'Mickey' Lauer +** <mickey@tm.informatik.uni-frankfurt.de> +** http://www.Vanille.de +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +**********************************************************************/ + +#include "advancedconfig.h" + +#include <qpe/config.h> +#include <qwidget.h> +#include <qcheckbox.h> + +AdvancedConfig::AdvancedConfig( QWidget* parent, const char* name, bool modal, WFlags fl ) + : AdvancedConfigBase( parent, name, modal, fl ) +{ + Config cfg( "qpe" ); + cfg.setGroup( "Wireless" ); + + bool rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); + bool rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false ); + bool rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false ); + bool rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false ); + + cbESSID->setChecked( rocESSID ); + cbFrequency->setChecked( rocFREQ ); + cbAccessPoint->setChecked( rocAP ); + cbMODE->setChecked( rocMODE ); +} + +AdvancedConfig::~AdvancedConfig() +{ +} + +void AdvancedConfig::accept() +{ + + Config cfg( "qpe" ); + cfg.setGroup( "Wireless" ); + cfg.writeEntry( "renew_dhcp_on_essid_change", cbESSID->isChecked() ); + cfg.writeEntry( "renew_dhcp_on_freq_change", cbFrequency->isChecked() ); + cfg.writeEntry( "renew_dhcp_on_ap_change", cbAccessPoint->isChecked() ); + cfg.writeEntry( "renew_dhcp_on_mode_change", cbMODE->isChecked() ); + + AdvancedConfigBase::accept(); +} + diff --git a/noncore/applets/wirelessapplet/advancedconfig.h b/noncore/applets/wirelessapplet/advancedconfig.h new file mode 100644 index 0000000..17ba3c5 --- a/dev/null +++ b/noncore/applets/wirelessapplet/advancedconfig.h @@ -0,0 +1,36 @@ +/********************************************************************** +** Copyright (C) 2002 Michael 'Mickey' Lauer +** <mickey@tm.informatik.uni-frankfurt.de> +** http://www.Vanille.de +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +**********************************************************************/ + +#ifndef ADVANCED_CONFIG_H +#define ADVANCED_CONFIG_H + +#include "advancedconfigbase.h" + +#include <qnamespace.h> + +class AdvancedConfig: public AdvancedConfigBase +{ + Q_OBJECT + +public: + AdvancedConfig( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ~AdvancedConfig(); + +protected: + virtual void accept(); + +}; + +#endif diff --git a/noncore/applets/wirelessapplet/advancedconfigbase.ui b/noncore/applets/wirelessapplet/advancedconfigbase.ui new file mode 100644 index 0000000..c7c4a10 --- a/dev/null +++ b/noncore/applets/wirelessapplet/advancedconfigbase.ui @@ -0,0 +1,159 @@ +<!DOCTYPE UI><UI> +<class>AdvancedConfigBase</class> +<comment>/********************************************************************** +** Copyright (C) 2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Palmtop Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +** $Id$ +** +**********************************************************************/</comment> +<widget> + <class>QDialog</class> + <property stdset="1"> + <name>name</name> + <cstring>AdvancedConfigBase</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>197</width> + <height>158</height> + </rect> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>caption</name> + <string>Advanced Config</string> + </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> + <widget> + <class>QGroupBox</class> + <property stdset="1"> + <name>name</name> + <cstring>fraStart</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>11</x> + <y>11</y> + <width>175</width> + <height>136</height> + </rect> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Sunken</enum> + </property> + <property stdset="1"> + <name>title</name> + <string>Renew DHCP on changing</string> + </property> + <widget> + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout5</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>10</x> + <y>21</y> + <width>98</width> + <height>96</height> + </rect> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget row="1" column="0" > + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>cbFrequency</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Frequency</string> + </property> + </widget> + <widget row="3" column="0" > + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>cbMODE</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>MODE</string> + </property> + </widget> + <widget row="0" column="0" > + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>cbESSID</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>ESSID</string> + </property> + </widget> + <widget row="2" column="0" > + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>cbAccessPoint</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>AccessPoint</string> + </property> + </widget> + </grid> + </widget> + </widget> +</widget> +<connections> + <slot access="protected">itemUp()</slot> + <slot access="protected">itemDown()</slot> +</connections> +</UI> diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp index 22d7d83..8531fd5 100644 --- a/noncore/applets/wirelessapplet/networkinfo.cpp +++ b/noncore/applets/wirelessapplet/networkinfo.cpp @@ -46,16 +46,18 @@ outside these boundaries. :Mickey: */ #define IW_UPPER 220 #define IW_LOWER 140 #define PROCNETDEV "/proc/net/dev" #define PROCNETWIRELESS "/proc/net/wireless" +#define MDEBUG 0 + //--------------------------------------------------------------------------- // class MNetworkInterface // MNetworkInterface::MNetworkInterface( const char* name ) :name( name ) { struct ifreq ifr; @@ -64,18 +66,19 @@ MNetworkInterface::MNetworkInterface( const char* name ) } MNetworkInterface::~MNetworkInterface() { if ( fd != -1 ) close( fd ); } -void MNetworkInterface::updateStatistics() +bool MNetworkInterface::updateStatistics() { + return true; } //--------------------------------------------------------------------------- // class MWirelessNetworkInterface // MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n ) :MNetworkInterface( n ) @@ -99,19 +102,21 @@ int MWirelessNetworkInterface::signalPercent() return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; } int MWirelessNetworkInterface::noisePercent() { return ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; } -void MWirelessNetworkInterface::updateStatistics() +bool MWirelessNetworkInterface::updateStatistics() { - MNetworkInterface::updateStatistics(); + bool base = MNetworkInterface::updateStatistics(); + if ( !base ) + return false; const char* buffer[200]; struct iwreq iwr; memset( &iwr, 0, sizeof( iwr ) ); iwr.u.essid.pointer = (caddr_t) buffer; iwr.u.essid.length = IW_ESSID_MAX_SIZE; iwr.u.essid.flags = 0; @@ -176,61 +181,68 @@ void MWirelessNetworkInterface::updateStatistics() QTextStream wstream( &wfile ); if ( hasFile ) { wstream.readLine(); // skip the first two lines wstream.readLine(); // because they only contain headers } if ( ( !hasFile ) || ( wstream.atEnd() ) ) { +#ifdef MDEBUG qDebug( "WIFIAPPLET: D'oh! Someone removed the card..." ); +#endif quality = -1; signal = IW_LOWER; noise = IW_LOWER; - return; + return false; } wstream >> name >> status >> quality >> c >> signal >> c >> noise; if ( quality > 92 ) +#ifdef MDEBUG qDebug( "WIFIAPPLET: D'oh! Quality %d > estimated max!\n", quality ); +#endif if ( ( signal > IW_UPPER ) || ( signal < IW_LOWER ) ) +#ifdef MDEBUG qDebug( "WIFIAPPLET: Doh! Strength %d > estimated max!\n", signal ); +#endif if ( ( noise > IW_UPPER ) || ( noise < IW_LOWER ) ) +#ifdef MDEBUG qDebug( "WIFIAPPLET: Doh! Noise %d > estimated max!\n", noise ); +#endif + + return true; + } //--------------------------------------------------------------------------- // class Network // MNetwork::MNetwork() { - //qDebug( "MNetwork::MNetwork()" ); procfile = PROCNETDEV; } MNetwork::~MNetwork() { - //qDebug( "MNetwork::~MNetwork()" ); } //--------------------------------------------------------------------------- // class WirelessNetwork // MWirelessNetwork::MWirelessNetwork() { - //qDebug( "MWirelessNetwork::MWirelessNetwork()" ); procfile = PROCNETWIRELESS; } MWirelessNetwork::~MWirelessNetwork() { - //qDebug( "MWirelessNetwork::~MWirelessNetwork()" ); } MNetworkInterface* MWirelessNetwork::createInterface( const char* n ) const { return new MWirelessNetworkInterface( n ); } //--------------------------------------------------------------------------- @@ -254,17 +266,19 @@ void MNetwork::enumerateInterfaces() return; QTextStream s( &f ); s.readLine(); s.readLine(); while ( !s.atEnd() ) { s >> str; str.truncate( str.find( ':' ) ); +#ifdef MDEBUG qDebug( "WIFIAPPLET: found interface '%s'", (const char*) str ); +#endif interfaces.insert( str, createInterface( str ) ); s.readLine(); } } MNetworkInterface* MNetwork::createInterface( const char* n ) const { return new MNetworkInterface( n ); diff --git a/noncore/applets/wirelessapplet/networkinfo.h b/noncore/applets/wirelessapplet/networkinfo.h index c5eb743..7e50bc4 100644 --- a/noncore/applets/wirelessapplet/networkinfo.h +++ b/noncore/applets/wirelessapplet/networkinfo.h @@ -32,17 +32,17 @@ class MNetworkInterface public: MNetworkInterface( const char* name = "eth0" ); virtual ~MNetworkInterface(); bool isLoopback() { return isLoopbackInterface; }; const QString& getName() { return name; }; - virtual void updateStatistics(); + virtual bool updateStatistics(); protected: int fd; const QString name; bool isLoopbackInterface; bool isIrda; bool isTunnel; @@ -65,17 +65,17 @@ public: QString APAddr; QString essid; QString mode; QString nick; QString rate; double freq; int channel; - virtual void updateStatistics(); + virtual bool updateStatistics(); private: int quality; int signal; int noise; bool hasWirelessExtensions; }; diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp index 183aab8..a5aabb0 100644 --- a/noncore/applets/wirelessapplet/wireless.cpp +++ b/noncore/applets/wirelessapplet/wireless.cpp @@ -16,41 +16,49 @@ #include "wireless.h" #include <qapplication.h> #include <qpe/qpeapplication.h> #include <qpe/config.h> #include <qpoint.h> #include <qradiobutton.h> -#include <qcheckbox.h> +#include <qpushbutton.h> #include <qpainter.h> #include <qlabel.h> #include <qslider.h> #include <qbuttongroup.h> #include <qlayout.h> #include <qframe.h> #include <qpixmap.h> #include <qstring.h> #include <qfile.h> +#include <qtextstream.h> + +#include <sys/types.h> +#include <signal.h> #include "networkinfo.h" #include "mgraph.h" +#include "advancedconfig.h" + #include "connect0.xpm" #include "connect1.xpm" #include "connect2.xpm" #include "connect3.xpm" #include "connect4.xpm" #include "connect5.xpm" #include "nowireless.xpm" #define STYLE_BARS 0 #define STYLE_ANTENNA 1 +#define MDEBUG 0 + WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) { readConfig(); writeConfigEntry( "UpdateFrequency", updateFrequency ); writeConfigEntry( "DisplayStyle", displayStyle ); @@ -89,22 +97,23 @@ WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const mgraph = new MGraph( this ); mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); mgraph->setMin( 0 ); mgraph->setMax( 92 ); grid->addWidget( mgraph, 1, 0 ); mgraph->setFocusPolicy( QWidget::NoFocus ); - /* dhcp renew CheckBox */ + /* advanced configuration Button */ - //FIXME: under construction - //QCheckBox* dhcpCheckBox = new QCheckBox( "DHCP renew", this ); - //dhcpCheckBox->setFocusPolicy( QWidget::NoFocus ); - //grid->addWidget( dhcpCheckBox, 2, 0, Qt::AlignCenter ); + QPushButton* advanced = new QPushButton( "Advanced...", this ); + advanced->setFocusPolicy( QWidget::NoFocus ); + grid->addWidget( advanced, 2, 0, Qt::AlignCenter ); + connect( advanced, SIGNAL( clicked() ), + this, SLOT( advancedConfigClicked() ) ); /* update Frequency Label */ updateLabel = new QLabel( this ); text.sprintf( "Update every %d s", updateFrequency ); updateLabel->setText( text ); grid->addWidget( updateLabel, 2, 1 ); @@ -123,17 +132,32 @@ WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const setFixedSize( sizeHint() ); setFocusPolicy( QWidget::NoFocus ); applet->displayStyleChange( displayStyle ); applet->updateDelayChange( updateFrequency ); connect( group, SIGNAL( clicked( int ) ), - this, SLOT( displayStyleChange( int ) ) ); + this, SLOT( displayStyleChange( int ) ) ); + + applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); +} + +void WirelessControl::advancedConfigClicked() +{ + AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE ); + int result = a->exec(); + a->hide(); + delete a; + if ( result == QDialog::Accepted ) + { + readConfig(); + applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); + } } void WirelessControl::updateDelayChange( int delay ) { QString text; text.sprintf( "Update every %d s", delay ); updateLabel->setText( text ); applet->updateDelayChange( delay ); @@ -161,52 +185,97 @@ void WirelessControl::show ( bool ) } void WirelessControl::readConfig() { Config cfg( "qpe" ); cfg.setGroup( "Wireless" ); updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 ); - displayStyle = cfg. readNumEntry( "DisplayStyle", STYLE_ANTENNA ); + displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA ); + rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); + rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false ); + rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false ); + rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false ); } void WirelessControl::writeConfigEntry( const char *entry, int val ) { Config cfg( "qpe" ); cfg.setGroup( "Wireless" ); cfg.writeEntry( entry, val ); } //=========================================================================== WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), - timer( 0 ), interface( 0 ) + timer( 0 ), interface( 0 ), + rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) { setFixedHeight( 18 ); setFixedWidth( 14 ); network = new MWirelessNetwork(); status = new WirelessControl( this, 0, "wireless status" ); } void WirelessApplet::checkInterface() { interface = network->getFirstInterface(); if ( interface ) { +#ifdef MDEBUG qDebug( "WIFIAPPLET: using interface '%s'", (const char*) +#endif interface->getName() ); } else { +#ifdef MDEBUG qDebug( "WIFIAPPLET: D'oh! No Wireless interface present... :(" ); + hide(); +#endif } } +void WirelessApplet::renewDHCP() +{ +#ifdef MDEBUG + qDebug( "WIFIAPPLET: Going to request a DHCP configuration renew." ); +#endif + + QString pidfile; + if ( !interface ) + return; + QString ifacename( interface->getName() ); + pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename ); +#ifdef MDEBUG + qDebug( "WIFIAPPLET: pidfile is '%s'", (const char*) pidfile ); +#endif + int pid; + QFile pfile( pidfile ); + bool hasFile = pfile.open( IO_ReadOnly ); + QTextStream s( &pfile ); + if ( hasFile ) + s >> pid; +#ifdef MDEBUG + qDebug( "WIFIAPPLET: sent -14 to pid %d", pid ); +#endif + kill( pid, -14 ); + +} + +void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE ) +{ + rocESSID = ESSID; + rocFREQ = FREQ; + rocAP = AP; + rocMODE = MODE; +} + void WirelessApplet::updateDelayChange( int delay ) { if ( timer ) killTimer( timer ); delay *= 1000; if ( delay == 0 ) delay = 50; timer = startTimer( delay ); @@ -223,17 +292,23 @@ WirelessApplet::~WirelessApplet() } void WirelessApplet::timerEvent( QTimerEvent* ) { MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; if ( iface ) { - iface->updateStatistics(); + bool statResult = iface->updateStatistics(); + if ( !statResult ) + { + interface = 0; + mustRepaint(); + return; + } else if ( mustRepaint() ) { //qDebug( "WIFIAPPLET: A value has changed -> repainting." ); repaint(); } if ( status->isVisible() ) updatePopupWindow(); @@ -253,18 +328,32 @@ bool WirelessApplet::mustRepaint() MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; // check if there are enough changes to justify a (flickering) repaint // has the interface changed? if ( iface != oldiface ) { - oldiface = iface; - return true; + oldiface = iface; + if ( iface ) + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: We had no interface but now we have one! :-)" ); +#endif + show(); + } + else + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: We had a interface but now we don't have one! ;-(" ); +#endif + hide(); + return true; + } } const char** pixmap = getQualityPixmap(); if ( pixmap && ( pixmap != oldpixmap ) ) { oldpixmap = pixmap; return true; @@ -278,16 +367,50 @@ bool WirelessApplet::mustRepaint() || ( signalH != oldsignalH ) || ( qualityH != oldqualityH ) ) { oldnoiseH = noiseH; oldsignalH = signalH; oldqualityH = qualityH; return true; } + + if ( rocESSID && ( oldESSID != iface->essid ) ) + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: ESSID has changed."); +#endif + renewDHCP(); + } + else if ( rocFREQ && ( oldFREQ != iface->freq ) ) + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: FREQ has changed."); +#endif + renewDHCP(); + } + else if ( rocAP && ( oldAP != iface->APAddr ) ) + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: AP has changed."); +#endif + renewDHCP(); + } + else if ( rocMODE && ( oldMODE != iface->mode ) ) + { +#ifdef MDEBUG + qDebug( "WIFIAPPLET: MODE has changed."); +#endif + renewDHCP(); + } + + oldESSID = iface->essid; + oldMODE = iface->mode; + oldFREQ = iface->freq; + oldAP = iface->APAddr; return false; } void WirelessApplet::updatePopupWindow() { MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; int qualityH = iface->qualityPercent(); @@ -329,17 +452,17 @@ const char** WirelessApplet::getQualityPixmap() void WirelessApplet::paintEvent( QPaintEvent* ) { MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; QPainter p(this); QColor color; const char** pixmap = getQualityPixmap(); - + if ( pixmap ) p.drawPixmap( 0, 1, pixmap ); else { int noiseH = iface->noisePercent() * ( height() - 3 ) / 100; int signalH = iface->signalPercent() * ( height() - 3 ) / 100; int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100; diff --git a/noncore/applets/wirelessapplet/wireless.h b/noncore/applets/wirelessapplet/wireless.h index 45c519d..51a3fab 100644 --- a/noncore/applets/wirelessapplet/wireless.h +++ b/noncore/applets/wirelessapplet/wireless.h @@ -40,41 +40,49 @@ public: MGraph* mgraph; QLabel* statusLabel; QLabel* updateLabel; public slots: void updateDelayChange( int ); void displayStyleChange( int ); + void advancedConfigClicked(); private: WirelessApplet* applet; int displayStyle; int updateFrequency; + bool rocESSID; + bool rocFREQ; + bool rocAP; + bool rocMODE; }; class WirelessApplet : public QWidget { Q_OBJECT public: WirelessApplet( QWidget *parent = 0, const char *name=0 ); ~WirelessApplet(); WirelessControl* status; virtual void timerEvent( QTimerEvent* ); void updateDelayChange( int delay ); void displayStyleChange( int style ); + + void updateDHCPConfig( bool, bool, bool, bool ); private: void mousePressEvent( QMouseEvent * ); void paintEvent( QPaintEvent* ); void checkInterface(); + void renewDHCP(); bool mustRepaint(); void updatePopupWindow(); const char** getQualityPixmap(); private: QPixmap snapshotPixmap; int visualStyle; @@ -84,12 +92,22 @@ private: MNetworkInterface* interface; private: const char** oldpixmap; MWirelessNetworkInterface* oldiface; int oldqualityH; int oldsignalH; int oldnoiseH; + + QString oldESSID; + QString oldAP; + QString oldMODE; + double oldFREQ; + + bool rocESSID; + bool rocFREQ; + bool rocAP; + bool rocMODE; }; #endif // __WIRELESS_APPLET_H__ diff --git a/noncore/applets/wirelessapplet/wirelessapplet.pro b/noncore/applets/wirelessapplet/wirelessapplet.pro index b758d4f..390b271 100644 --- a/noncore/applets/wirelessapplet/wirelessapplet.pro +++ b/noncore/applets/wirelessapplet/wirelessapplet.pro @@ -1,18 +1,19 @@ TEMPLATE = lib CONFIG += qt warn_on release -HEADERS = wireless.h wirelessappletimpl.h networkinfo.h mgraph.h -SOURCES = wireless.cpp wirelessappletimpl.cpp networkinfo.cpp mgraph.cpp +HEADERS = wireless.h wirelessappletimpl.h networkinfo.h mgraph.h advancedconfig.h +SOURCES = wireless.cpp wirelessappletimpl.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp +INTERFACES = advancedconfigbase.ui TARGET = wirelessapplet DESTDIR = $(OPIEDIR)/plugins/applets INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += ../$(OPIEDIR)/include LIBS += -lqpe -VERSION = 0.0.3 +VERSION = 0.1.0 TRANSLATIONS = ../../../i18n/de/libwirelessapplet.ts \ ../../../i18n/en/libwirelessapplet.ts \ ../../../i18n/es/libwirelessapplet.ts \ ../../../i18n/fr/libwirelessapplet.ts \ ../../../i18n/hu/libwirelessapplet.ts \ ../../../i18n/ja/libwirelessapplet.ts \ ../../../i18n/ko/libwirelessapplet.ts \ |