summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-31 02:12:34 (UTC)
committer sandman <sandman>2002-10-31 02:12:34 (UTC)
commit035eaf63bb2156ea7facd6b50f8891503d1f7bed (patch) (unidiff)
treecbb390a9a67952ea501eaa376ae72b425ae16f6b
parentddd5f680b3dbd5e169d43f5216fbf24b04e4cb33 (diff)
downloadopie-035eaf63bb2156ea7facd6b50f8891503d1f7bed.zip
opie-035eaf63bb2156ea7facd6b50f8891503d1f7bed.tar.gz
opie-035eaf63bb2156ea7facd6b50f8891503d1f7bed.tar.bz2
Applied the same fix as in volume applet (parent widget should not be 0 for
taskbar applets) even though wireless applet seems not to be causing any troubles. But IMHO it's better to apply it now ...
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/wirelessapplet/wireless.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/applets/wirelessapplet/wireless.cpp b/noncore/applets/wirelessapplet/wireless.cpp
index fb9522a..763aab8 100644
--- a/noncore/applets/wirelessapplet/wireless.cpp
+++ b/noncore/applets/wirelessapplet/wireless.cpp
@@ -1,539 +1,539 @@
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 55//#define MDEBUG
56#undef MDEBUG 56#undef MDEBUG
57 57
58WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name ) 58WirelessControl::WirelessControl( WirelessApplet *applet, QWidget *parent, const char *name )
59 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet ) 59 : QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet )
60{ 60{
61 61
62 readConfig(); 62 readConfig();
63 writeConfigEntry( "UpdateFrequency", updateFrequency ); 63 writeConfigEntry( "UpdateFrequency", updateFrequency );
64 writeConfigEntry( "DisplayStyle", displayStyle ); 64 writeConfigEntry( "DisplayStyle", displayStyle );
65 65
66 setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); 66 setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
67 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" ); 67 QGridLayout *grid = new QGridLayout( this, 3, 2, 6, 2, "top layout" );
68 68
69 /* status label */ 69 /* status label */
70 70
71 statusLabel = new QLabel( this, "statuslabel" ); 71 statusLabel = new QLabel( this, "statuslabel" );
72 QString text( "Wireless Status:<br>" 72 QString text( "Wireless Status:<br>"
73 "*** Unknown ***<br>" 73 "*** Unknown ***<br>"
74 "Card not inserted ?<br>" 74 "Card not inserted ?<br>"
75 "Or Sharp ROM ?<br>" 75 "Or Sharp ROM ?<br>"
76 "CELL: 00:00:00:00:00:00" ); 76 "CELL: 00:00:00:00:00:00" );
77/* QString text( "Station: Unknown<br>" 77/* QString text( "Station: Unknown<br>"
78 "ESSID: Unknown<br>" 78 "ESSID: Unknown<br>"
79 "MODE: Unknown<br>" 79 "MODE: Unknown<br>"
80 "FREQ: Unknown<br>" 80 "FREQ: Unknown<br>"
81 "CELL: AA:BB:CC:DD:EE:FF" ); */ 81 "CELL: AA:BB:CC:DD:EE:FF" ); */
82 statusLabel->setText( text ); 82 statusLabel->setText( text );
83 statusLabel->setFixedSize( statusLabel->sizeHint() ); 83 statusLabel->setFixedSize( statusLabel->sizeHint() );
84 grid->addWidget( statusLabel, 0, 0 ); 84 grid->addWidget( statusLabel, 0, 0 );
85 85
86 /* visualization group box */ 86 /* visualization group box */
87 87
88 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this ); 88 QButtonGroup* group = new QButtonGroup( 1, Qt::Horizontal, "Visualization", this );
89 QRadioButton* r1 = new QRadioButton( "Color Bars", group ); 89 QRadioButton* r1 = new QRadioButton( "Color Bars", group );
90 QRadioButton* r2 = new QRadioButton( "Antenna", group ); 90 QRadioButton* r2 = new QRadioButton( "Antenna", group );
91 r1->setFocusPolicy( QWidget::NoFocus ); 91 r1->setFocusPolicy( QWidget::NoFocus );
92 r2->setFocusPolicy( QWidget::NoFocus ); 92 r2->setFocusPolicy( QWidget::NoFocus );
93 group->setFocusPolicy( QWidget::NoFocus ); 93 group->setFocusPolicy( QWidget::NoFocus );
94 group->setButton( displayStyle ); 94 group->setButton( displayStyle );
95 grid->addWidget( group, 0, 1 ); 95 grid->addWidget( group, 0, 1 );
96 96
97 /* quality graph */ 97 /* quality graph */
98 98
99 mgraph = new MGraph( this ); 99 mgraph = new MGraph( this );
100 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); 100 mgraph->setFrameStyle( QFrame::Panel | QFrame::Sunken );
101 mgraph->setMin( 0 ); 101 mgraph->setMin( 0 );
102 mgraph->setMax( 92 ); 102 mgraph->setMax( 92 );
103 grid->addWidget( mgraph, 1, 0 ); 103 grid->addWidget( mgraph, 1, 0 );
104 mgraph->setFocusPolicy( QWidget::NoFocus ); 104 mgraph->setFocusPolicy( QWidget::NoFocus );
105 105
106 /* advanced configuration Button */ 106 /* advanced configuration Button */
107 107
108 QPushButton* advanced = new QPushButton( "Advanced...", this ); 108 QPushButton* advanced = new QPushButton( "Advanced...", this );
109 advanced->setFocusPolicy( QWidget::NoFocus ); 109 advanced->setFocusPolicy( QWidget::NoFocus );
110 grid->addWidget( advanced, 2, 0, Qt::AlignCenter ); 110 grid->addWidget( advanced, 2, 0, Qt::AlignCenter );
111 connect( advanced, SIGNAL( clicked() ), 111 connect( advanced, SIGNAL( clicked() ),
112 this, SLOT( advancedConfigClicked() ) ); 112 this, SLOT( advancedConfigClicked() ) );
113 113
114 /* update Frequency Label */ 114 /* update Frequency Label */
115 115
116 updateLabel = new QLabel( this ); 116 updateLabel = new QLabel( this );
117 text.sprintf( "Update every %d s", updateFrequency ); 117 text.sprintf( "Update every %d s", updateFrequency );
118 updateLabel->setText( text ); 118 updateLabel->setText( text );
119 grid->addWidget( updateLabel, 2, 1 ); 119 grid->addWidget( updateLabel, 2, 1 );
120 120
121 /* update Frequency Slider */ 121 /* update Frequency Slider */
122 122
123 QSlider* updateSlider = new QSlider( QSlider::Horizontal, this ); 123 QSlider* updateSlider = new QSlider( QSlider::Horizontal, this );
124 updateSlider->setRange( 0, 9 ); 124 updateSlider->setRange( 0, 9 );
125 updateSlider->setValue( updateFrequency ); 125 updateSlider->setValue( updateFrequency );
126 updateSlider->setTickmarks( QSlider::Both ); 126 updateSlider->setTickmarks( QSlider::Both );
127 updateSlider->setTickInterval( 1 ); 127 updateSlider->setTickInterval( 1 );
128 updateSlider->setSteps( 1, 1 ); 128 updateSlider->setSteps( 1, 1 );
129 updateSlider->setFocusPolicy( QWidget::NoFocus ); 129 updateSlider->setFocusPolicy( QWidget::NoFocus );
130 grid->addWidget( updateSlider, 1, 1 ); 130 grid->addWidget( updateSlider, 1, 1 );
131 connect( updateSlider, SIGNAL( valueChanged( int ) ), 131 connect( updateSlider, SIGNAL( valueChanged( int ) ),
132 this, SLOT( updateDelayChange( int ) ) ); 132 this, SLOT( updateDelayChange( int ) ) );
133 133
134 setFixedSize( sizeHint() ); 134 setFixedSize( sizeHint() );
135 setFocusPolicy( QWidget::NoFocus ); 135 setFocusPolicy( QWidget::NoFocus );
136 136
137 applet->displayStyleChange( displayStyle ); 137 applet->displayStyleChange( displayStyle );
138 applet->updateDelayChange( updateFrequency ); 138 applet->updateDelayChange( updateFrequency );
139 139
140 connect( group, SIGNAL( clicked( int ) ), 140 connect( group, SIGNAL( clicked( int ) ),
141 this, SLOT( displayStyleChange( int ) ) ); 141 this, SLOT( displayStyleChange( int ) ) );
142 142
143 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); 143 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE );
144} 144}
145 145
146void WirelessControl::advancedConfigClicked() 146void WirelessControl::advancedConfigClicked()
147{ 147{
148 AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE ); 148 AdvancedConfig* a = new AdvancedConfig( this, "dialog", TRUE );
149 int result = a->exec(); 149 int result = a->exec();
150 a->hide(); 150 a->hide();
151 delete a; 151 delete a;
152 if ( result == QDialog::Accepted ) 152 if ( result == QDialog::Accepted )
153 { 153 {
154 readConfig(); 154 readConfig();
155 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE ); 155 applet->updateDHCPConfig( rocESSID, rocFREQ, rocAP, rocMODE );
156 } 156 }
157} 157}
158 158
159void WirelessControl::updateDelayChange( int delay ) 159void WirelessControl::updateDelayChange( int delay )
160{ 160{
161 QString text; 161 QString text;
162 text.sprintf( "Update every %d s", delay ); 162 text.sprintf( "Update every %d s", delay );
163 updateLabel->setText( text ); 163 updateLabel->setText( text );
164 applet->updateDelayChange( delay ); 164 applet->updateDelayChange( delay );
165 writeConfigEntry( "UpdateFrequency", delay ); 165 writeConfigEntry( "UpdateFrequency", delay );
166} 166}
167 167
168void WirelessControl::displayStyleChange( int style ) 168void WirelessControl::displayStyleChange( int style )
169{ 169{
170 applet->displayStyleChange( style ); 170 applet->displayStyleChange( style );
171 writeConfigEntry( "DisplayStyle", style ); 171 writeConfigEntry( "DisplayStyle", style );
172} 172}
173 173
174void WirelessControl::show ( bool ) 174void WirelessControl::show ( bool )
175{ 175{
176 QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) ); 176 QPoint curPos = applet->mapToGlobal( QPoint ( 0, 0 ) );
177 177
178 int w = sizeHint().width(); 178 int w = sizeHint().width();
179 int x = curPos.x() - ( w / 2 ); 179 int x = curPos.x() - ( w / 2 );
180 180
181 if ( ( x + w ) > QPEApplication::desktop()->width() ) 181 if ( ( x + w ) > QPEApplication::desktop()->width() )
182 x = QPEApplication::desktop ( )-> width ( ) - w; 182 x = QPEApplication::desktop ( )-> width ( ) - w;
183 183
184 move( x, curPos.y () - sizeHint().height () ); 184 move( x, curPos.y () - sizeHint().height () );
185 QFrame::show(); 185 QFrame::show();
186} 186}
187 187
188void WirelessControl::readConfig() 188void WirelessControl::readConfig()
189{ 189{
190 Config cfg( "qpe" ); 190 Config cfg( "qpe" );
191 cfg.setGroup( "Wireless" ); 191 cfg.setGroup( "Wireless" );
192 192
193 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 ); 193 updateFrequency = cfg.readNumEntry( "UpdateFrequency", 2 );
194 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA ); 194 displayStyle = cfg.readNumEntry( "DisplayStyle", STYLE_ANTENNA );
195 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false ); 195 rocESSID = cfg.readBoolEntry( "renew_dhcp_on_essid_change", false );
196 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false ); 196 rocFREQ = cfg.readBoolEntry( "renew_dhcp_on_freq_change", false );
197 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false ); 197 rocAP = cfg.readBoolEntry( "renew_dhcp_on_ap_change", false );
198 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false ); 198 rocMODE = cfg.readBoolEntry( "renew_dhcp_on_mode_change", false );
199} 199}
200 200
201void WirelessControl::writeConfigEntry( const char *entry, int val ) 201void WirelessControl::writeConfigEntry( const char *entry, int val )
202{ 202{
203 Config cfg( "qpe" ); 203 Config cfg( "qpe" );
204 cfg.setGroup( "Wireless" ); 204 cfg.setGroup( "Wireless" );
205 cfg.writeEntry( entry, val ); 205 cfg.writeEntry( entry, val );
206} 206}
207 207
208//=========================================================================== 208//===========================================================================
209 209
210WirelessApplet::WirelessApplet( QWidget *parent, const char *name ) 210WirelessApplet::WirelessApplet( QWidget *parent, const char *name )
211 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ), 211 : QWidget( parent, name ), visualStyle( STYLE_ANTENNA ),
212 timer( 0 ), interface( 0 ), 212 timer( 0 ), interface( 0 ),
213 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false ) 213 rocESSID( false ), rocFREQ( false ), rocAP( false ), rocMODE( false )
214{ 214{
215 setFixedHeight( 18 ); 215 setFixedHeight( 18 );
216 setFixedWidth( 14 ); 216 setFixedWidth( 14 );
217 network = new MWirelessNetwork(); 217 network = new MWirelessNetwork();
218 status = new WirelessControl( this, 0, "wireless status" ); 218 status = new WirelessControl( this, this, "wireless status" );
219} 219}
220 220
221void WirelessApplet::checkInterface() 221void WirelessApplet::checkInterface()
222{ 222{
223 interface = network->getFirstInterface(); 223 interface = network->getFirstInterface();
224 if ( interface ) 224 if ( interface )
225 { 225 {
226#ifdef MDEBUG 226#ifdef MDEBUG
227 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) interface->getName() ); 227 qDebug( "WIFIAPPLET: using interface '%s'", (const char*) interface->getName() );
228#endif 228#endif
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#endif 234#endif
235 hide(); 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 249
250 // At first we are trying dhcpcd 250 // At first we are trying dhcpcd
251 251
252 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename ); 252 pidfile.sprintf( "/var/run/dhcpcd-%s.pid", (const char* ) ifacename );
253#ifdef MDEBUG 253#ifdef MDEBUG
254 qDebug( "WIFIAPPLET: dhcpcd pidfile is '%s'", (const char*) pidfile ); 254 qDebug( "WIFIAPPLET: dhcpcd pidfile is '%s'", (const char*) pidfile );
255#endif 255#endif
256 int pid; 256 int pid;
257 QFile pfile( pidfile ); 257 QFile pfile( pidfile );
258 bool hasFile = pfile.open( IO_ReadOnly ); 258 bool hasFile = pfile.open( IO_ReadOnly );
259 QTextStream s( &pfile ); 259 QTextStream s( &pfile );
260 if ( hasFile ) 260 if ( hasFile )
261 { 261 {
262 s >> pid; 262 s >> pid;
263#ifdef MDEBUG 263#ifdef MDEBUG
264 qDebug( "WIFIAPPLET: sent SIGALARM to pid %d", pid ); 264 qDebug( "WIFIAPPLET: sent SIGALARM to pid %d", pid );
265#endif 265#endif
266 kill( pid, SIGALRM ); 266 kill( pid, SIGALRM );
267 return; 267 return;
268 } 268 }
269 269
270 // No dhcpcd, so we are trying udhcpc 270 // No dhcpcd, so we are trying udhcpc
271#ifdef MDEBUG 271#ifdef MDEBUG
272 qDebug( "WIFIAPPLET: dhcpcd not available." ); 272 qDebug( "WIFIAPPLET: dhcpcd not available." );
273#endif 273#endif
274 pidfile.sprintf( "/var/run/udhcpc.%s.pid", (const char*) ifacename ); 274 pidfile.sprintf( "/var/run/udhcpc.%s.pid", (const char*) ifacename );
275#ifdef MDEBUG 275#ifdef MDEBUG
276 qDebug( "WIFIAPPLET: udhcpc pidfile is '%s'", (const char*) pidfile ); 276 qDebug( "WIFIAPPLET: udhcpc pidfile is '%s'", (const char*) pidfile );
277#endif 277#endif
278 QFile pfile2( pidfile ); 278 QFile pfile2( pidfile );
279 hasFile = pfile2.open( IO_ReadOnly ); 279 hasFile = pfile2.open( IO_ReadOnly );
280 QTextStream s2( &pfile2 ); 280 QTextStream s2( &pfile2 );
281 if ( hasFile ) 281 if ( hasFile )
282 { 282 {
283 s2 >> pid; 283 s2 >> pid;
284#ifdef MDEBUG 284#ifdef MDEBUG
285 qDebug( "WIFIAPPLET: sent SIGUSR1 to pid %d", pid ); 285 qDebug( "WIFIAPPLET: sent SIGUSR1 to pid %d", pid );
286#endif 286#endif
287 kill( pid, SIGUSR1 ); 287 kill( pid, SIGUSR1 );
288 return; 288 return;
289 } 289 }
290} 290}
291 291
292void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE ) 292void WirelessApplet::updateDHCPConfig( bool ESSID, bool FREQ, bool AP, bool MODE )
293{ 293{
294 rocESSID = ESSID; 294 rocESSID = ESSID;
295 rocFREQ = FREQ; 295 rocFREQ = FREQ;
296 rocAP = AP; 296 rocAP = AP;
297 rocMODE = MODE; 297 rocMODE = MODE;
298} 298}
299 299
300void WirelessApplet::updateDelayChange( int delay ) 300void WirelessApplet::updateDelayChange( int delay )
301{ 301{
302 if ( timer ) 302 if ( timer )
303 killTimer( timer ); 303 killTimer( timer );
304 delay *= 1000; 304 delay *= 1000;
305 if ( delay == 0 ) 305 if ( delay == 0 )
306 delay = 50; 306 delay = 50;
307 timer = startTimer( delay ); 307 timer = startTimer( delay );
308} 308}
309 309
310void WirelessApplet::displayStyleChange( int style ) 310void WirelessApplet::displayStyleChange( int style )
311{ 311{
312 visualStyle = style; 312 visualStyle = style;
313 repaint(); 313 repaint();
314} 314}
315 315
316WirelessApplet::~WirelessApplet() 316WirelessApplet::~WirelessApplet()
317{ 317{
318} 318}
319 319
320void WirelessApplet::timerEvent( QTimerEvent* ) 320void WirelessApplet::timerEvent( QTimerEvent* )
321{ 321{
322 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 322 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
323 323
324 if ( iface ) 324 if ( iface )
325 { 325 {
326 bool statResult = iface->updateStatistics(); 326 bool statResult = iface->updateStatistics();
327 if ( !statResult ) 327 if ( !statResult )
328 { 328 {
329 interface = 0; 329 interface = 0;
330 mustRepaint(); 330 mustRepaint();
331 return; 331 return;
332 } else 332 } else
333 if ( mustRepaint() ) 333 if ( mustRepaint() )
334 { 334 {
335 //qDebug( "WIFIAPPLET: A value has changed -> repainting." ); 335 //qDebug( "WIFIAPPLET: A value has changed -> repainting." );
336 repaint(); 336 repaint();
337 } 337 }
338 338
339 if ( status->isVisible() ) 339 if ( status->isVisible() )
340 updatePopupWindow(); 340 updatePopupWindow();
341 } else checkInterface(); 341 } else checkInterface();
342} 342}
343 343
344void WirelessApplet::mousePressEvent( QMouseEvent *) 344void WirelessApplet::mousePressEvent( QMouseEvent *)
345{ 345{
346 if ( status->isVisible() ) 346 if ( status->isVisible() )
347 status->hide(); 347 status->hide();
348 else 348 else
349 status->show( true ); 349 status->show( true );
350} 350}
351 351
352bool WirelessApplet::mustRepaint() 352bool WirelessApplet::mustRepaint()
353{ 353{
354 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 354 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
355 355
356 // check if there are enough changes to justify a (flickering) repaint 356 // check if there are enough changes to justify a (flickering) repaint
357 357
358 // has the interface changed? 358 // has the interface changed?
359 359
360 if ( iface != oldiface ) 360 if ( iface != oldiface )
361 { 361 {
362 oldiface = iface; 362 oldiface = iface;
363 if ( iface ) 363 if ( iface )
364 { 364 {
365#ifdef MDEBUG 365#ifdef MDEBUG
366 qDebug( "WIFIAPPLET: We had no interface but now we have one! :-)" ); 366 qDebug( "WIFIAPPLET: We had no interface but now we have one! :-)" );
367#endif 367#endif
368 show(); 368 show();
369 } 369 }
370 else 370 else
371 { 371 {
372#ifdef MDEBUG 372#ifdef MDEBUG
373 qDebug( "WIFIAPPLET: We had a interface but now we don't have one! ;-(" ); 373 qDebug( "WIFIAPPLET: We had a interface but now we don't have one! ;-(" );
374#endif 374#endif
375 hide(); 375 hide();
376 return true; 376 return true;
377 } 377 }
378 } 378 }
379 379
380 const char** pixmap = getQualityPixmap(); 380 const char** pixmap = getQualityPixmap();
381 381
382 if ( pixmap && ( pixmap != oldpixmap ) ) 382 if ( pixmap && ( pixmap != oldpixmap ) )
383 { 383 {
384 oldpixmap = pixmap; 384 oldpixmap = pixmap;
385 return true; 385 return true;
386 } 386 }
387 387
388 int noiseH = iface->noisePercent() * ( height() - 3 ) / 100; 388 int noiseH = iface->noisePercent() * ( height() - 3 ) / 100;
389 int signalH = iface->signalPercent() * ( height() - 3 ) / 100; 389 int signalH = iface->signalPercent() * ( height() - 3 ) / 100;
390 int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100; 390 int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100;
391 391
392 if ( ( noiseH != oldnoiseH ) 392 if ( ( noiseH != oldnoiseH )
393 || ( signalH != oldsignalH ) 393 || ( signalH != oldsignalH )
394 || ( qualityH != oldqualityH ) ) 394 || ( qualityH != oldqualityH ) )
395 { 395 {
396 oldnoiseH = noiseH; 396 oldnoiseH = noiseH;
397 oldsignalH = signalH; 397 oldsignalH = signalH;
398 oldqualityH = qualityH; 398 oldqualityH = qualityH;
399 return true; 399 return true;
400 } 400 }
401 401
402 if ( rocESSID && ( oldESSID != iface->essid ) ) 402 if ( rocESSID && ( oldESSID != iface->essid ) )
403 { 403 {
404#ifdef MDEBUG 404#ifdef MDEBUG
405 qDebug( "WIFIAPPLET: ESSID has changed."); 405 qDebug( "WIFIAPPLET: ESSID has changed.");
406#endif 406#endif
407 renewDHCP(); 407 renewDHCP();
408 } 408 }
409 else if ( rocFREQ && ( oldFREQ != iface->freq ) ) 409 else if ( rocFREQ && ( oldFREQ != iface->freq ) )
410 { 410 {
411#ifdef MDEBUG 411#ifdef MDEBUG
412 qDebug( "WIFIAPPLET: FREQ has changed."); 412 qDebug( "WIFIAPPLET: FREQ has changed.");
413#endif 413#endif
414 renewDHCP(); 414 renewDHCP();
415 } 415 }
416 else if ( rocAP && ( oldAP != iface->APAddr ) ) 416 else if ( rocAP && ( oldAP != iface->APAddr ) )
417 { 417 {
418#ifdef MDEBUG 418#ifdef MDEBUG
419 qDebug( "WIFIAPPLET: AP has changed."); 419 qDebug( "WIFIAPPLET: AP has changed.");
420#endif 420#endif
421 renewDHCP(); 421 renewDHCP();
422 } 422 }
423 else if ( rocMODE && ( oldMODE != iface->mode ) ) 423 else if ( rocMODE && ( oldMODE != iface->mode ) )
424 { 424 {
425#ifdef MDEBUG 425#ifdef MDEBUG
426 qDebug( "WIFIAPPLET: MODE has changed."); 426 qDebug( "WIFIAPPLET: MODE has changed.");
427#endif 427#endif
428 renewDHCP(); 428 renewDHCP();
429 } 429 }
430 430
431 oldESSID = iface->essid; 431 oldESSID = iface->essid;
432 oldMODE = iface->mode; 432 oldMODE = iface->mode;
433 oldFREQ = iface->freq; 433 oldFREQ = iface->freq;
434 oldAP = iface->APAddr; 434 oldAP = iface->APAddr;
435 435
436 return false; 436 return false;
437} 437}
438 438
439void WirelessApplet::updatePopupWindow() 439void WirelessApplet::updatePopupWindow()
440{ 440{
441 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 441 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
442 int qualityH = iface->qualityPercent(); 442 int qualityH = iface->qualityPercent();
443 443
444 if ( status->mgraph ) 444 if ( status->mgraph )
445 status->mgraph->addValue( qualityH, false ); 445 status->mgraph->addValue( qualityH, false );
446 446
447 QString freqString; 447 QString freqString;
448 QString cell = ( iface->mode == "Managed" ) ? "AP: " : "Cell: "; 448 QString cell = ( iface->mode == "Managed" ) ? "AP: " : "Cell: ";
449 freqString.sprintf( "%.3f GHz", iface->freq ); 449 freqString.sprintf( "%.3f GHz", iface->freq );
450 status->statusLabel->setText( "Station: " + iface->nick + "<br>" + 450 status->statusLabel->setText( "Station: " + iface->nick + "<br>" +
451 "ESSID: " + iface->essid + "<br>" + 451 "ESSID: " + iface->essid + "<br>" +
452 "MODE: " + iface->mode + "<br>" + 452 "MODE: " + iface->mode + "<br>" +
453 "FREQ: " + freqString + "<br>" + 453 "FREQ: " + freqString + "<br>" +
454 cell + " " + iface->APAddr ); 454 cell + " " + iface->APAddr );
455} 455}
456 456
457const char** WirelessApplet::getQualityPixmap() 457const char** WirelessApplet::getQualityPixmap()
458{ 458{
459 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 459 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
460 460
461 if ( !iface ) return ( const char** ) nowireless_xpm; 461 if ( !iface ) return ( const char** ) nowireless_xpm;
462 int qualityH = iface->qualityPercent(); 462 int qualityH = iface->qualityPercent();
463 if ( qualityH < 0 ) return ( const char** ) nowireless_xpm; 463 if ( qualityH < 0 ) return ( const char** ) nowireless_xpm;
464 464
465 if ( visualStyle == STYLE_ANTENNA ) 465 if ( visualStyle == STYLE_ANTENNA )
466 { 466 {
467 if ( qualityH < 1 ) return ( const char** ) connect0_xpm; 467 if ( qualityH < 1 ) return ( const char** ) connect0_xpm;
468 if ( qualityH < 17 ) return ( const char** ) connect1_xpm; 468 if ( qualityH < 17 ) return ( const char** ) connect1_xpm;
469 if ( qualityH < 34 ) return ( const char** ) connect2_xpm; 469 if ( qualityH < 34 ) return ( const char** ) connect2_xpm;
470 if ( qualityH < 50 ) return ( const char** ) connect3_xpm; 470 if ( qualityH < 50 ) return ( const char** ) connect3_xpm;
471 if ( qualityH < 65 ) return ( const char** ) connect4_xpm; 471 if ( qualityH < 65 ) return ( const char** ) connect4_xpm;
472 return ( const char** ) connect5_xpm; 472 return ( const char** ) connect5_xpm;
473 } 473 }
474 474
475 return 0; // please draw your bars 475 return 0; // please draw your bars
476} 476}
477 477
478void WirelessApplet::paintEvent( QPaintEvent* ) 478void WirelessApplet::paintEvent( QPaintEvent* )
479{ 479{
480 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface; 480 MWirelessNetworkInterface* iface = ( MWirelessNetworkInterface* ) interface;
481 481
482 QPainter p(this); 482 QPainter p(this);
483 QColor color; 483 QColor color;
484 484
485 const char** pixmap = getQualityPixmap(); 485 const char** pixmap = getQualityPixmap();
486 486
487 if ( pixmap ) 487 if ( pixmap )
488 p.drawPixmap( 0, 1, pixmap ); 488 p.drawPixmap( 0, 1, pixmap );
489 else 489 else
490 { 490 {
491 491
492 int noiseH = iface->noisePercent() * ( height() - 3 ) / 100; 492 int noiseH = iface->noisePercent() * ( height() - 3 ) / 100;
493 int signalH = iface->signalPercent() * ( height() - 3 ) / 100; 493 int signalH = iface->signalPercent() * ( height() - 3 ) / 100;
494 int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100; 494 int qualityH = iface->qualityPercent() * ( height() - 3 ) / 100;
495 495
496 double intensity; 496 double intensity;
497 int pixelHeight; 497 int pixelHeight;
498 int pixelWidth = 2; 498 int pixelWidth = 2;
499 int Hue; 499 int Hue;
500 int barSpace = 3; 500 int barSpace = 3;
501 int leftoffset = 0; 501 int leftoffset = 0;
502 int bottomoffset = 2; 502 int bottomoffset = 2;
503 503
504 // draw noise indicator 504 // draw noise indicator
505 pixelHeight = noiseH; 505 pixelHeight = noiseH;
506 Hue = 50; 506 Hue = 50;
507 for ( int i = 0; i < pixelHeight; ++i ) 507 for ( int i = 0; i < pixelHeight; ++i )
508 { 508 {
509 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; 509 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205;
510 color.setHsv( Hue, 255, intensity ); 510 color.setHsv( Hue, 255, intensity );
511 p.setPen ( color ); 511 p.setPen ( color );
512 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); 512 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i );
513 } 513 }
514 514
515 // draw signal indicator 515 // draw signal indicator
516 pixelHeight = signalH; 516 pixelHeight = signalH;
517 Hue = 100; 517 Hue = 100;
518 leftoffset += pixelWidth + barSpace; 518 leftoffset += pixelWidth + barSpace;
519 for ( int i = 0; i < pixelHeight; ++i ) 519 for ( int i = 0; i < pixelHeight; ++i )
520 { 520 {
521 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; 521 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205;
522 color.setHsv( Hue, 255, intensity ); 522 color.setHsv( Hue, 255, intensity );
523 p.setPen ( color ); 523 p.setPen ( color );
524 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); 524 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i );
525 } 525 }
526 526
527 // draw quality indicator 527 // draw quality indicator
528 pixelHeight = qualityH; 528 pixelHeight = qualityH;
529 Hue = 250; 529 Hue = 250;
530 leftoffset += pixelWidth + barSpace; 530 leftoffset += pixelWidth + barSpace;
531 for ( int i = 0; i < pixelHeight; ++i ) 531 for ( int i = 0; i < pixelHeight; ++i )
532 { 532 {
533 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205; 533 intensity = 50 + ( (double) i / (double) pixelHeight ) * 205;
534 color.setHsv( Hue, 255, intensity ); 534 color.setHsv( Hue, 255, intensity );
535 p.setPen ( color ); 535 p.setPen ( color );
536 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i ); 536 p.drawLine( leftoffset, height()-bottomoffset-i, pixelWidth+leftoffset, height()-bottomoffset-i );
537 } 537 }
538 } 538 }
539} 539}