summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/networkinfo.cpp3
-rw-r--r--noncore/applets/wirelessapplet/wireless.cpp8
2 files changed, 6 insertions, 5 deletions
diff --git a/noncore/applets/wirelessapplet/networkinfo.cpp b/noncore/applets/wirelessapplet/networkinfo.cpp
index 8531fd5..2274d99 100644
--- a/noncore/applets/wirelessapplet/networkinfo.cpp
+++ b/noncore/applets/wirelessapplet/networkinfo.cpp
@@ -1,150 +1,151 @@
1/********************************************************************** 1/**********************************************************************
2** MNetwork* classes 2** MNetwork* classes
3** 3**
4** Encapsulate network information 4** Encapsulate network information
5** 5**
6** Copyright (C) 2002, Michael Lauer 6** Copyright (C) 2002, Michael Lauer
7** mickey@tm.informatik.uni-frankfurt.de 7** mickey@tm.informatik.uni-frankfurt.de
8** http://www.Vanille.de 8** http://www.Vanille.de
9** 9**
10** Based on portions of the Wireless Extensions 10** Based on portions of the Wireless Extensions
11** Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com> 11** Copyright (c) 1997-2002 Jean Tourrilhes <jt@hpl.hp.com>
12** 12**
13** This file may be distributed and/or modified under the terms of the 13** This file may be distributed and/or modified under the terms of the
14** GNU General Public License version 2 as published by the Free Software 14** GNU General Public License version 2 as published by the Free Software
15** Foundation and appearing in the file LICENSE.GPL included in the 15** Foundation and appearing in the file LICENSE.GPL included in the
16** packaging of this file. 16** packaging of this file.
17** 17**
18** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 18** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
19** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 19** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20** 20**
21**********************************************************************/ 21**********************************************************************/
22 22
23#include "networkinfo.h" 23#include "networkinfo.h"
24 24
25#include <arpa/inet.h> 25#include <arpa/inet.h>
26#include <sys/socket.h> 26#include <sys/socket.h>
27#include <linux/if_ether.h> 27#include <linux/if_ether.h>
28#include <netinet/ip.h> 28#include <netinet/ip.h>
29#include <sys/ioctl.h> 29#include <sys/ioctl.h>
30#include <linux/wireless.h> 30#include <linux/wireless.h>
31 31
32#include <unistd.h> 32#include <unistd.h>
33#include <math.h> 33#include <math.h>
34#include <errno.h> 34#include <errno.h>
35#include <string.h> 35#include <string.h>
36 36
37#include <stdlib.h> 37#include <stdlib.h>
38 38
39#include <qstring.h> 39#include <qstring.h>
40#include <qfile.h> 40#include <qfile.h>
41#include <qtextstream.h> 41#include <qtextstream.h>
42 42
43/* estimated wireless signal strength and noise level values 43/* estimated wireless signal strength and noise level values
44 based on experimentation with Orinoco and Prism2 cards. 44 based on experimentation with Orinoco and Prism2 cards.
45 Seem to be correct, but please inform me, if you got values 45 Seem to be correct, but please inform me, if you got values
46 outside these boundaries. :Mickey: */ 46 outside these boundaries. :Mickey: */
47 47
48#define IW_UPPER 220 48#define IW_UPPER 220
49#define IW_LOWER 140 49#define IW_LOWER 140
50 50
51#define PROCNETDEV "/proc/net/dev" 51#define PROCNETDEV "/proc/net/dev"
52#define PROCNETWIRELESS "/proc/net/wireless" 52#define PROCNETWIRELESS "/proc/net/wireless"
53 53
54#define MDEBUG 0 54//#define MDEBUG 0
55#undef MDEBUG
55 56
56//--------------------------------------------------------------------------- 57//---------------------------------------------------------------------------
57// class MNetworkInterface 58// class MNetworkInterface
58// 59//
59 60
60MNetworkInterface::MNetworkInterface( const char* name ) 61MNetworkInterface::MNetworkInterface( const char* name )
61 :name( name ) 62 :name( name )
62{ 63{
63 struct ifreq ifr; 64 struct ifreq ifr;
64 struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr; 65 struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr;
65 fd = socket( AF_INET, SOCK_DGRAM, 0 ); 66 fd = socket( AF_INET, SOCK_DGRAM, 0 );
66} 67}
67 68
68MNetworkInterface::~MNetworkInterface() 69MNetworkInterface::~MNetworkInterface()
69{ 70{
70 if ( fd != -1 ) 71 if ( fd != -1 )
71 close( fd ); 72 close( fd );
72} 73}
73 74
74bool MNetworkInterface::updateStatistics() 75bool MNetworkInterface::updateStatistics()
75{ 76{
76 return true; 77 return true;
77} 78}
78 79
79//--------------------------------------------------------------------------- 80//---------------------------------------------------------------------------
80// class MWirelessNetworkInterface 81// class MWirelessNetworkInterface
81// 82//
82 83
83MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n ) 84MWirelessNetworkInterface::MWirelessNetworkInterface( const char* n )
84 :MNetworkInterface( n ) 85 :MNetworkInterface( n )
85{ 86{
86 signal = 0; 87 signal = 0;
87 noise = 0; 88 noise = 0;
88 quality = 0; 89 quality = 0;
89} 90}
90 91
91MWirelessNetworkInterface::~MWirelessNetworkInterface() 92MWirelessNetworkInterface::~MWirelessNetworkInterface()
92{ 93{
93} 94}
94 95
95int MWirelessNetworkInterface::qualityPercent() 96int MWirelessNetworkInterface::qualityPercent()
96{ 97{
97 return ( quality*100 ) / 92; 98 return ( quality*100 ) / 92;
98} 99}
99 100
100int MWirelessNetworkInterface::signalPercent() 101int MWirelessNetworkInterface::signalPercent()
101{ 102{
102 return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER; 103 return ( ( signal-IW_LOWER ) * 100 ) / IW_UPPER;
103} 104}
104 105
105int MWirelessNetworkInterface::noisePercent() 106int MWirelessNetworkInterface::noisePercent()
106{ 107{
107 return ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER; 108 return ( ( noise-IW_LOWER ) * 100 ) / IW_UPPER;
108} 109}
109 110
110bool MWirelessNetworkInterface::updateStatistics() 111bool MWirelessNetworkInterface::updateStatistics()
111{ 112{
112 bool base = MNetworkInterface::updateStatistics(); 113 bool base = MNetworkInterface::updateStatistics();
113 if ( !base ) 114 if ( !base )
114 return false; 115 return false;
115 116
116 const char* buffer[200]; 117 const char* buffer[200];
117 118
118 struct iwreq iwr; 119 struct iwreq iwr;
119 memset( &iwr, 0, sizeof( iwr ) ); 120 memset( &iwr, 0, sizeof( iwr ) );
120 iwr.u.essid.pointer = (caddr_t) buffer; 121 iwr.u.essid.pointer = (caddr_t) buffer;
121 iwr.u.essid.length = IW_ESSID_MAX_SIZE; 122 iwr.u.essid.length = IW_ESSID_MAX_SIZE;
122 iwr.u.essid.flags = 0; 123 iwr.u.essid.flags = 0;
123 124
124 // check if it is an IEEE 802.11 standard conform 125 // check if it is an IEEE 802.11 standard conform
125 // wireless device by sending SIOCGIWESSID 126 // wireless device by sending SIOCGIWESSID
126 // which also gives back the Extended Service Set ID 127 // which also gives back the Extended Service Set ID
127 // (see IEEE 802.11 for more information) 128 // (see IEEE 802.11 for more information)
128 129
129 strcpy( iwr.ifr_ifrn.ifrn_name, (const char*) name ); 130 strcpy( iwr.ifr_ifrn.ifrn_name, (const char*) name );
130 int result = ioctl( fd, SIOCGIWESSID, &iwr ); 131 int result = ioctl( fd, SIOCGIWESSID, &iwr );
131 if ( result == 0 ) 132 if ( result == 0 )
132 { 133 {
133 hasWirelessExtensions = true; 134 hasWirelessExtensions = true;
134 iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0'; 135 iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0';
135 essid = iwr.u.essid.pointer; 136 essid = iwr.u.essid.pointer;
136 } 137 }
137 else essid = "*** Unknown ***"; 138 else essid = "*** Unknown ***";
138 139
139 // Address of associated access-point 140 // Address of associated access-point
140 141
141 result = ioctl( fd, SIOCGIWAP, &iwr ); 142 result = ioctl( fd, SIOCGIWAP, &iwr );
142 if ( result == 0 ) 143 if ( result == 0 )
143 { 144 {
144 APAddr.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", 145 APAddr.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X",
145 iwr.u.ap_addr.sa_data[0]&0xff, 146 iwr.u.ap_addr.sa_data[0]&0xff,
146 iwr.u.ap_addr.sa_data[1]&0xff, 147 iwr.u.ap_addr.sa_data[1]&0xff,
147 iwr.u.ap_addr.sa_data[2]&0xff, 148 iwr.u.ap_addr.sa_data[2]&0xff,
148 iwr.u.ap_addr.sa_data[3]&0xff, 149 iwr.u.ap_addr.sa_data[3]&0xff,
149 iwr.u.ap_addr.sa_data[4]&0xff, 150 iwr.u.ap_addr.sa_data[4]&0xff,
150 iwr.u.ap_addr.sa_data[5]&0xff ); 151 iwr.u.ap_addr.sa_data[5]&0xff );
diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp
index a5aabb0..649cf20 100644
--- a/noncore/applets/wirelessapplet/wireless.cpp
+++ b/noncore/applets/wirelessapplet/wireless.cpp
@@ -1,331 +1,331 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2002 Michael 'Mickey' Lauer 2** Copyright (C) 2002 Michael 'Mickey' Lauer
3** <mickey@tm.informatik.uni-frankfurt.de> 3** <mickey@tm.informatik.uni-frankfurt.de>
4** http://www.Vanille.de 4** http://www.Vanille.de
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14**********************************************************************/ 14**********************************************************************/
15 15
16#include "wireless.h" 16#include "wireless.h"
17 17
18#include <qapplication.h> 18#include <qapplication.h>
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20#include <qpe/config.h> 20#include <qpe/config.h>
21 21
22#include <qpoint.h> 22#include <qpoint.h>
23#include <qradiobutton.h> 23#include <qradiobutton.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25#include <qpainter.h> 25#include <qpainter.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qslider.h> 27#include <qslider.h>
28#include <qbuttongroup.h> 28#include <qbuttongroup.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qframe.h> 30#include <qframe.h>
31#include <qpixmap.h> 31#include <qpixmap.h>
32#include <qstring.h> 32#include <qstring.h>
33#include <qfile.h> 33#include <qfile.h>
34#include <qtextstream.h> 34#include <qtextstream.h>
35 35
36#include <sys/types.h> 36#include <sys/types.h>
37#include <signal.h> 37#include <signal.h>
38 38
39#include "networkinfo.h" 39#include "networkinfo.h"
40#include "mgraph.h" 40#include "mgraph.h"
41 41
42#include "advancedconfig.h" 42#include "advancedconfig.h"
43 43
44#include "connect0.xpm" 44#include "connect0.xpm"
45#include "connect1.xpm" 45#include "connect1.xpm"
46#include "connect2.xpm" 46#include "connect2.xpm"
47#include "connect3.xpm" 47#include "connect3.xpm"
48#include "connect4.xpm" 48#include "connect4.xpm"
49#include "connect5.xpm" 49#include "connect5.xpm"
50#include "nowireless.xpm" 50#include "nowireless.xpm"
51 51
52#define STYLE_BARS 0 52#define STYLE_BARS 0
53#define STYLE_ANTENNA 1 53#define STYLE_ANTENNA 1
54 54
55#define MDEBUG 0 55//#define MDEBUG 0
56#undef MDEBUG
56 57
57WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) 58WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name )
58 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) 59 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet )
59{ 60{
60 61
61 readConfig(); 62 readConfig();
62 writeConfigEntry( "UpdateFrequency", updateFrequency ); 63 writeConfigEntry( "UpdateFrequency", updateFrequency );
63 writeConfigEntry( "DisplayStyle", displayStyle ); 64 writeConfigEntry( "DisplayStyle", displayStyle );
64 65
65 setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); 66 setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
66 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" ); 67 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" );
67 68
68 /* status label */ 69 /* status label */
69 70
70 statusLabel = new QLabel( this, "statuslabel" ); 71 statusLabel = new QLabel( this, "statuslabel" );
71 QString text( "Wireless Status:<br>" 72 QString text( "Wireless Status:<br>"
72 "*** Unknown ***<br>" 73 "*** Unknown ***<br>"
73 "Card not inserted ?<br>" 74 "Card not inserted ?<br>"
74 "Or Sharp ROM ?<br>" 75 "Or Sharp ROM ?<br>"
75 "CELL: 00:00:00:00:00:00" ); 76 "CELL: 00:00:00:00:00:00" );
76/* QString text( "Station: Unknown<br>" 77/* QString text( "Station: Unknown<br>"
77 "ESSID: Unknown<br>" 78 "ESSID: Unknown<br>"
78 "MODE: Unknown<br>" 79 "MODE: Unknown<br>"
79 "FREQ: Unknown<br>" 80 "FREQ: Unknown<br>"
80 "CELL: AA:BB:CC:DD:EE:FF" ); */ 81 "CELL: AA:BB:CC:DD:EE:FF" ); */
81 statusLabel->setText( text ); 82 statusLabel->setText( text );
82 statusLabel->setFixedSize( statusLabel->sizeHint() ); 83 statusLabel->setFixedSize( statusLabel->sizeHint() );
83 grid->addWidget( statusLabel, 0, 0 ); 84 grid->addWidget( statusLabel, 0, 0 );
84 85
85 /* visualization group box */ 86 /* visualization group box */
86 87
87 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this ); 88 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this );
88 QRadioButton* r1 = new QRadioButton( "Color Bars", group ); 89 QRadioButton* r1 = new QRadioButton( "Color Bars", group );
89 QRadioButton* r2 = new QRadioButton( "Antenna", group ); 90 QRadioButton* r2 = new QRadioButton( "Antenna", group );
90 r1->setFocusPolicy( QWidget::NoFocus ); 91 r1->setFocusPolicy( QWidget::NoFocus );
91 r2->setFocusPolicy( QWidget::NoFocus ); 92 r2->setFocusPolicy( QWidget::NoFocus );
92 group->setFocusPolicy( QWidget::NoFocus ); 93 group->setFocusPolicy( QWidget::NoFocus );
93 group->setButton( displayStyle ); 94 group->setButton( displayStyle );
94 grid->addWidget( group, 0, 1 ); 95 grid->addWidget( group, 0, 1 );
95 96
96 /* quality graph */ 97 /* quality graph */
97 98
98 mgraph = new MGraph( this ); 99 mgraph = new MGraph( this );
99 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 100 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken );
100 mgraph->setMin( 0 ); 101 mgraph->setMin( 0 );
101 mgraph->setMax( 92 ); 102 mgraph->setMax( 92 );
102 grid->addWidget( mgraph, 1, 0 ); 103 grid->addWidget( mgraph, 1, 0 );
103 mgraph->setFocusPolicy( QWidget::NoFocus ); 104 mgraph->setFocusPolicy( QWidget::NoFocus );
104 105
105 /* advanced configuration Button */ 106 /* advanced configuration Button */
106 107
107 QPushButton* advanced = new QPushButton( "Advanced...", this ); 108 QPushButton* advanced = new QPushButton( "Advanced...", this );
108 advanced->setFocusPolicy( QWidget::NoFocus ); 109 advanced->setFocusPolicy( QWidget::NoFocus );
109 grid->addWidget( advanced, 2, 0, Qt::AlignCenter ); 110 grid->addWidget( advanced, 2, 0, Qt::AlignCenter );
110 connect( advanced, SIGNAL( clicked() ), 111 connect( advanced, SIGNAL( clicked() ),
111 this, SLOT( advancedConfigClicked() ) ); 112 this, SLOT( advancedConfigClicked() ) );
112 113
113 /* update Frequency Label */ 114 /* update Frequency Label */
114 115
115 updateLabel = new QLabel( this ); 116 updateLabel = new QLabel( this );
116 text.sprintf( "Update every %d s", updateFrequency ); 117 text.sprintf( "Update every %d s", updateFrequency );
117 updateLabel->setText( text ); 118 updateLabel->setText( text );
118 grid->addWidget( updateLabel, 2, 1 ); 119 grid->addWidget( updateLabel, 2, 1 );
119 120
120 /* update Frequency Slider */ 121 /* update Frequency Slider */
121 122
122 QSlider* updateSlider = new QSlider( QSlider::Horizontal, this ); 123 QSlider* updateSlider = new QSlider( QSlider::Horizontal, this );
123 updateSlider->setRange( 0, 9 ); 124 updateSlider->setRange( 0, 9 );
124 updateSlider->setValue( updateFrequency ); 125 updateSlider->setValue( updateFrequency );
125 updateSlider->setTickmarks( QSlider::Both ); 126 updateSlider->setTickmarks( QSlider::Both );
126 updateSlider->setTickInterval( 1 ); 127 updateSlider->setTickInterval( 1 );
127 updateSlider->setSteps( 1, 1 ); 128 updateSlider->setSteps( 1, 1 );
128 updateSlider->setFocusPolicy( QWidget::NoFocus ); 129 updateSlider->setFocusPolicy( QWidget::NoFocus );
129 grid->addWidget( updateSlider, 1, 1 ); 130 grid->addWidget( updateSlider, 1, 1 );
130 connect( updateSlider, SIGNAL( valueChanged( int ) ), 131 connect( updateSlider, SIGNAL( valueChanged( int ) ),
131 this, SLOT( updateDelayChange( int ) ) ); 132 this, SLOT( updateDelayChange( int ) ) );
132 133
133 setFixedSize( sizeHint() ); 134 setFixedSize( sizeHint() );
134 setFocusPolicy( QWidget::NoFocus ); 135 setFocusPolicy( QWidget::NoFocus );
135 136
136 applet->displayStyleChange( displayStyle ); 137 applet->displayStyleChange( displayStyle );
137 applet->updateDelayChange( updateFrequency ); 138 applet->updateDelayChange( updateFrequency );
138 139
139 connect( group, SIGNAL( clicked( int ) ), 140 connect( group, SIGNAL( clicked( int ) ),
140 this, SLOT( displayStyleChange( int ) ) ); 141 this, SLOT( displayStyleChange( int ) ) );
141 142
142 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); 143 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE );
143} 144}
144 145
145void WirelessControl::advancedConfigClicked() 146void WirelessControl::advancedConfigClicked()
146{ 147{
147 AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE ); 148 AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE );
148 int result = a->exec(); 149 int result = a->exec();
149 a->hide(); 150 a->hide();
150 delete a; 151 delete a;
151 if ( result == QDialog::Accepted ) 152 if ( result == QDialog::Accepted )
152 { 153 {
153 readConfig(); 154 readConfig();
154 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); 155 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE );
155 } 156 }
156} 157}
157 158
158void WirelessControl::updateDelayChange( int delay ) 159void WirelessControl::updateDelayChange( int delay )
159{ 160{
160 QString text; 161 QString text;
161 text.sprintf( "Update every %d s", delay ); 162 text.sprintf( "Update every %d s", delay );
162 updateLabel->setText( text ); 163 updateLabel->setText( text );
163 applet->updateDelayChange( delay ); 164 applet->updateDelayChange( delay );
164 writeConfigEntry( "UpdateFrequency", delay ); 165 writeConfigEntry( "UpdateFrequency", delay );
165} 166}
166 167
167void WirelessControl::displayStyleChange( int style ) 168void WirelessControl::displayStyleChange( int style )
168{ 169{
169 applet->displayStyleChange( style ); 170 applet->displayStyleChange( style );
170 writeConfigEntry( "DisplayStyle", style ); 171 writeConfigEntry( "DisplayStyle", style );
171} 172}
172 173
173void WirelessControl::show ( bool ) 174void WirelessControl::show ( bool )
174{ 175{
175 QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) ); 176 QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) );
176 177
177 int w = sizeHint().width(); 178 int w = sizeHint().width();
178 int x = curPos.x() - ( w / 2 ); 179 int x = curPos.x() - ( w / 2 );
179 180
180 if ( ( x + w ) > QPEApplication::desktop()->width() ) 181 if ( ( x + w ) > QPEApplication::desktop()->width() )
181 x = QPEApplication::desktop ( )-> width ( ) - w; 182 x = QPEApplication::desktop ( )-> width ( ) - w;
182 183
183 move( x, curPos.y () - sizeHint().height () ); 184 move( x, curPos.y () - sizeHint().height () );
184 QFrame::show(); 185 QFrame::show();
185} 186}
186 187
187void WirelessControl::readConfig() 188void WirelessControl::readConfig()
188{ 189{
189 Config cfg( "qpe" ); 190 Config cfg( "qpe" );
190 cfg.setGroup( "Wireless" ); 191 cfg.setGroup( "Wireless" );
191 192
192 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 ); 193 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 );
193 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA ); 194 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA );
194 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); 195 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false );
195 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false ); 196 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false );
196 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false ); 197 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false );
197 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false ); 198 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false );
198} 199}
199 200
200void WirelessControl::writeConfigEntry( const char *entry, int val ) 201void WirelessControl::writeConfigEntry( const char *entry, int val )
201{ 202{
202 Config cfg( "qpe" ); 203 Config cfg( "qpe" );
203 cfg.setGroup( "Wireless" ); 204 cfg.setGroup( "Wireless" );
204 cfg.writeEntry( entry, val ); 205 cfg.writeEntry( entry, val );
205} 206}
206 207
207//=========================================================================== 208//===========================================================================
208 209
209WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) 210WirelessApplet::WirelessApplet( QWidget *parent, const char *name )
210 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), 211 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ),
211 timer( 0 ), interface( 0 ), 212 timer( 0 ), interface( 0 ),
212 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) 213 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false )
213{ 214{
214 setFixedHeight( 18 ); 215 setFixedHeight( 18 );
215 setFixedWidth( 14 ); 216 setFixedWidth( 14 );
216 network = new MWirelessNetwork(); 217 network = new MWirelessNetwork();
217 status = new WirelessControl( this, 0, "wireless status" ); 218 status = new WirelessControl( this, 0, "wireless status" );
218} 219}
219 220
220void WirelessApplet::checkInterface() 221void WirelessApplet::checkInterface()
221{ 222{
222 interface = network->getFirstInterface(); 223 interface = network->getFirstInterface();
223 if ( interface ) 224 if ( interface )
224 { 225 {
225#ifdef MDEBUG 226#ifdef MDEBUG
226 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) 227 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) interface->getName() );
227#endif 228#endif
228 interface->getName() );
229 } 229 }
230 else 230 else
231 { 231 {
232#ifdef MDEBUG 232#ifdef MDEBUG
233 qDebug( "WIFIAPPLET: D'oh! No Wireless interface present... :(" ); 233 qDebug( "WIFIAPPLET: D'oh! No Wireless interface present... :(" );
234 hide();
235#endif 234#endif
235 hide();
236 } 236 }
237} 237}
238 238
239void WirelessApplet::renewDHCP() 239void WirelessApplet::renewDHCP()
240{ 240{
241#ifdef MDEBUG 241#ifdef MDEBUG
242 qDebug( "WIFIAPPLET: Going to request a DHCP configuration renew." ); 242 qDebug( "WIFIAPPLET: Going to request a DHCP configuration renew." );
243#endif 243#endif
244 244
245 QString pidfile; 245 QString pidfile;
246 if ( !interface ) 246 if ( !interface )
247 return; 247 return;
248 QString ifacename( interface->getName() ); 248 QString ifacename( interface->getName() );
249 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename ); 249 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename );
250#ifdef MDEBUG 250#ifdef MDEBUG
251 qDebug( "WIFIAPPLET: pidfile is '%s'", (const char*) pidfile ); 251 qDebug( "WIFIAPPLET: pidfile is '%s'", (const char*) pidfile );
252#endif 252#endif
253 int pid; 253 int pid;
254 QFile pfile( pidfile ); 254 QFile pfile( pidfile );
255 bool hasFile = pfile.open( IO_ReadOnly ); 255 bool hasFile = pfile.open( IO_ReadOnly );
256 QTextStream s( &pfile ); 256 QTextStream s( &pfile );
257 if ( hasFile ) 257 if ( hasFile )
258 s >> pid; 258 s >> pid;
259#ifdef MDEBUG 259#ifdef MDEBUG
260 qDebug( "WIFIAPPLET: sent -14 to pid %d", pid ); 260 qDebug( "WIFIAPPLET: sent -14 to pid %d", pid );
261#endif 261#endif
262 kill( pid, -14 ); 262 kill( pid, -14 );
263 263
264} 264}
265 265
266void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE ) 266void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE )
267{ 267{
268 rocESSID = ESSID; 268 rocESSID = ESSID;
269 rocFREQ = FREQ; 269 rocFREQ = FREQ;
270 rocAP = AP; 270 rocAP = AP;
271 rocMODE = MODE; 271 rocMODE = MODE;
272} 272}
273 273
274void WirelessApplet::updateDelayChange( int delay ) 274void WirelessApplet::updateDelayChange( int delay )
275{ 275{
276 if ( timer ) 276 if ( timer )
277 killTimer( timer ); 277 killTimer( timer );
278 delay *= 1000; 278 delay *= 1000;
279 if ( delay == 0 ) 279 if ( delay == 0 )
280 delay = 50; 280 delay = 50;
281 timer = startTimer( delay ); 281 timer = startTimer( delay );
282} 282}
283 283
284void WirelessApplet::displayStyleChange( int style ) 284void WirelessApplet::displayStyleChange( int style )
285{ 285{
286 visualStyle = style; 286 visualStyle = style;
287 repaint(); 287 repaint();
288} 288}
289 289
290WirelessApplet::~WirelessApplet() 290WirelessApplet::~WirelessApplet()
291{ 291{
292} 292}
293 293
294void WirelessApplet::timerEvent( QTimerEvent* ) 294void WirelessApplet::timerEvent( QTimerEvent* )
295{ 295{
296 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 296 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
297 297
298 if ( iface ) 298 if ( iface )
299 { 299 {
300 bool statResult = iface->updateStatistics(); 300 bool statResult = iface->updateStatistics();
301 if ( !statResult ) 301 if ( !statResult )
302 { 302 {
303 interface = 0; 303 interface = 0;
304 mustRepaint(); 304 mustRepaint();
305 return; 305 return;
306 } else 306 } else
307 if ( mustRepaint() ) 307 if ( mustRepaint() )
308 { 308 {
309 //qDebug( "WIFIAPPLET: A value has changed -> repainting." ); 309 //qDebug( "WIFIAPPLET: A value has changed -> repainting." );
310 repaint(); 310 repaint();
311 } 311 }
312 312
313 if ( status->isVisible() ) 313 if ( status->isVisible() )
314 updatePopupWindow(); 314 updatePopupWindow();
315 } else checkInterface(); 315 } else checkInterface();
316} 316}
317 317
318void WirelessApplet::mousePressEvent( QMouseEvent *) 318void WirelessApplet::mousePressEvent( QMouseEvent *)
319{ 319{
320 if ( status->isVisible() ) 320 if ( status->isVisible() )
321 status->hide(); 321 status->hide();
322 else 322 else
323 status->show( true ); 323 status->show( true );
324} 324}
325 325
326bool WirelessApplet::mustRepaint() 326bool WirelessApplet::mustRepaint()
327{ 327{
328 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 328 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
329 329
330 // check if there are enough changes to justify a (flickering) repaint 330 // check if there are enough changes to justify a (flickering) repaint
331 331