summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp
index 32560a1..91ab2e1 100644
--- a/noncore/net/opietooth/applet/bluezapplet.cpp
+++ b/noncore/net/opietooth/applet/bluezapplet.cpp
@@ -1,335 +1,335 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de> 3             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This library is free software; you can 5 _;:,     .>    :=|. This library is free software; you can
6.> <,   >  .   <= redistribute it and/or modify it under 6.> <,   >  .   <= redistribute it and/or modify it under
7:=1 )Y*s>-.--   : the terms of the GNU Library General Public 7:=1 )Y*s>-.--   : the terms of the GNU Library General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; version 2 of the License. 9 - .   .-<_>     .<> Foundation; version 2 of the License.
10     ._= =}       : 10     ._= =}       :
11    .%+i>       _;_. 11    .%+i>       _;_.
12    .i_,=:_.      -<s. This library is distributed in the hope that 12    .i_,=:_.      -<s. This library is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU 16  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU
17..}^=.=       =       ; Library General Public License for more 17..}^=.=       =       ; Library General Public License for more
18++=   -.     .     .: details. 18++=   -.     .     .: details.
19 :     =  ...= . :.=- 19 :     =  ...= . :.=-
20 -.   .:....=;==+<; You should have received a copy of the GNU 20 -.   .:....=;==+<; You should have received a copy of the GNU
21  -_. . .   )=.  = Library General Public License along with 21  -_. . .   )=.  = Library General Public License along with
22   --        :-= this library; see the file COPYING.LIB. 22   --        :-= this library; see the file COPYING.LIB.
23 If not, write to the Free Software Foundation, 23 If not, write to the Free Software Foundation,
24 Inc., 59 Temple Place - Suite 330, 24 Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29 29
30#include "bluezapplet.h" 30#include "bluezapplet.h"
31 31
32/* OPIE */ 32/* OPIE */
33#include <opie2/otaskbarapplet.h> 33#include <opie2/otaskbarapplet.h>
34#include <opie2/odevice.h> 34#include <opie2/odevice.h>
35#include <opie2/odebug.h> 35#include <opie2/odebug.h>
36#include <opie2/oresource.h> 36#include <opie2/oresource.h>
37#include <opie2/oprocess.h> 37#include <opie2/oprocess.h>
38#include <qpe/version.h> 38#include <qpe/version.h>
39#include <qpe/applnk.h> 39#include <qpe/applnk.h>
40#include <qpe/qcopenvelope_qws.h> 40#include <qpe/qcopenvelope_qws.h>
41#include <qpe/config.h> 41#include <qpe/config.h>
42using namespace Opie::Core; 42using namespace Opie::Core;
43 43
44/* QT */ 44/* QT */
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qpoint.h> 46#include <qpoint.h>
47#include <qpainter.h> 47#include <qpainter.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qframe.h> 49#include <qframe.h>
50#include <qpixmap.h> 50#include <qpixmap.h>
51#include <qstring.h> 51#include <qstring.h>
52#include <qtimer.h> 52#include <qtimer.h>
53#include <qpopupmenu.h> 53#include <qpopupmenu.h>
54#include <qmessagebox.h> 54#include <qmessagebox.h>
55 55
56/* STD */ 56/* STD */
57#include <device.h> 57#include <device.h>
58 58
59namespace OpieTooth { 59namespace OpieTooth {
60 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) { 60 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) {
61 setFixedHeight( AppLnk::smallIconSize() ); 61 setFixedHeight( AppLnk::smallIconSize() );
62 setFixedWidth( AppLnk::smallIconSize() ); 62 setFixedWidth( AppLnk::smallIconSize() );
63#if OPIE_VERSION < 102010 63#if OPIE_VERSION < 102010
64 bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" ); 64 bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" );
65 bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" ); 65 bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" );
66 bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass.png" ); 66 bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass.png" );
67 bluezReceiveOnPixmap = Resource::loadPixmap( "bluetoothapplet/receive.png" ); 67 bluezReceiveOnPixmap = Resource::loadPixmap( "bluetoothapplet/receive.png" );
68#else 68#else
69 bluezOnPixmap = OResource::loadImage( "bluetoothapplet/bluezon", OResource::SmallIcon ); 69 bluezOnPixmap = OResource::loadImage( "bluetoothapplet/bluezon", OResource::SmallIcon );
70 bluezOffPixmap = OResource::loadImage( "bluetoothapplet/bluezoff", Opie::Core::OResource::SmallIcon ); 70 bluezOffPixmap = OResource::loadImage( "bluetoothapplet/bluezoff", Opie::Core::OResource::SmallIcon );
71 bluezDiscoveryOnPixmap = OResource::loadImage( "bluetoothapplet/bluezondiscovery", Opie::Core::OResource::SmallIcon ); 71 bluezDiscoveryOnPixmap = OResource::loadImage( "bluetoothapplet/bluezondiscovery", Opie::Core::OResource::SmallIcon );
72 bluezReceiveOnPixmap = )Resource::loadImage( "bluetoothapplet/bluezonreceive", Opie::Core::OResource::SmallIcon ); 72 bluezReceiveOnPixmap = Resource::loadImage( "bluetoothapplet/bluezonreceive", Opie::Core::OResource::SmallIcon );
73#endif 73#endif
74 startTimer(2000); 74 startTimer(2000);
75 btDevice = 0; 75 btDevice = 0;
76 btManager = 0; 76 btManager = 0;
77 bluezactive = false; 77 bluezactive = false;
78 bluezDiscoveryActive = false; 78 bluezDiscoveryActive = false;
79 bluezReceiveActive = false; 79 bluezReceiveActive = false;
80 bluezReceiveChanged = false; 80 bluezReceiveChanged = false;
81 doListDevice = false; 81 doListDevice = false;
82 isScanning = false; 82 isScanning = false;
83 m_wasOn = false; 83 m_wasOn = false;
84 m_sync = false; 84 m_sync = false;
85 85
86 // TODO: determine whether this channel has to be closed at destruction time. 86 // TODO: determine whether this channel has to be closed at destruction time.
87 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); 87 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this );
88 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), 88 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ),
89 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); 89 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) );
90 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); 90 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
91 } 91 }
92 92
93 BluezApplet::~BluezApplet() { 93 BluezApplet::~BluezApplet() {
94 if ( btDevice ) { 94 if ( btDevice ) {
95 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); 95 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
96 delete btDevice; 96 delete btDevice;
97 } 97 }
98 if ( btManager ) { 98 if ( btManager ) {
99 delete btManager; 99 delete btManager;
100 } 100 }
101 } 101 }
102 102
103 int BluezApplet::position() 103 int BluezApplet::position()
104 { 104 {
105 return 6; 105 return 6;
106 } 106 }
107 107
108 108
109 bool BluezApplet::checkBluezStatus() { 109 bool BluezApplet::checkBluezStatus() {
110 if (btDevice) { 110 if (btDevice) {
111 if (btDevice->isLoaded() ) { 111 if (btDevice->isLoaded() ) {
112 odebug << "btDevice isLoaded" << oendl; 112 odebug << "btDevice isLoaded" << oendl;
113 return true; 113 return true;
114 } else { 114 } else {
115 odebug << "btDevice is NOT loaded" << oendl; 115 odebug << "btDevice is NOT loaded" << oendl;
116 return false; 116 return false;
117 } 117 }
118 } else { 118 } else {
119 odebug << "btDevice is ZERO" << oendl; 119 odebug << "btDevice is ZERO" << oendl;
120 return false; 120 return false;
121 } 121 }
122 } 122 }
123 123
124 int BluezApplet::setBluezStatus(int c, bool sync) { 124 int BluezApplet::setBluezStatus(int c, bool sync) {
125 125
126 if ( c == 1 ) { 126 if ( c == 1 ) {
127 switch ( ODevice::inst()->model() ) { 127 switch ( ODevice::inst()->model() ) {
128 case Model_iPAQ_H39xx: 128 case Model_iPAQ_H39xx:
129 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" ); 129 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" );
130 break; 130 break;
131 131
132 case Model_iPAQ_H5xxx: 132 case Model_iPAQ_H5xxx:
133 btDevice = new Device( "/dev/tts/1", "any", "921600" ); 133 btDevice = new Device( "/dev/tts/1", "any", "921600" );
134 break; 134 break;
135 135
136#if OPIE_VERSION >= 102010 136#if OPIE_VERSION >= 102010
137 case Model_MyPal_716: 137 case Model_MyPal_716:
138 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" ); 138 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" );
139 break; 139 break;
140#endif 140#endif
141 case Model_iPAQ_H22xx: 141 case Model_iPAQ_H22xx:
142 btDevice = new Device( "/dev/tts/3", "any", "921600" ); 142 btDevice = new Device( "/dev/tts/3", "any", "921600" );
143 break; 143 break;
144 144
145 default: 145 default:
146 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" ); 146 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" );
147 break; 147 break;
148 } 148 }
149 m_sync = sync; 149 m_sync = sync;
150 connect(btDevice, SIGNAL(device(const QString&, bool)), 150 connect(btDevice, SIGNAL(device(const QString&, bool)),
151 this, SLOT(slotDevice(const QString&, bool))); 151 this, SLOT(slotDevice(const QString&, bool)));
152 152
153 } else { 153 } else {
154 setObexRecieveStatus(0); 154 setObexRecieveStatus(0);
155 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); 155 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
156 if ( btManager ) { 156 if ( btManager ) {
157 delete btManager; 157 delete btManager;
158 btManager = 0; 158 btManager = 0;
159 } 159 }
160 if ( btDevice ) { 160 if ( btDevice ) {
161 delete btDevice; 161 delete btDevice;
162 btDevice = 0; 162 btDevice = 0;
163 } 163 }
164 } 164 }
165 return 0; 165 return 0;
166 } 166 }
167 167
168 int BluezApplet::checkBluezDiscoveryStatus() { 168 int BluezApplet::checkBluezDiscoveryStatus() {
169 return isScanning; 169 return isScanning;
170 } 170 }
171 171
172 int BluezApplet::setBluezDiscoveryStatus(int d) { 172 int BluezApplet::setBluezDiscoveryStatus(int d) {
173 return bluezDiscoveryActive = d; 173 return bluezDiscoveryActive = d;
174 } 174 }
175 175
176 int BluezApplet::setObexRecieveStatus(int d) { 176 int BluezApplet::setObexRecieveStatus(int d) {
177 { 177 {
178 QCopEnvelope e ( "QPE/Obex", "btreceive(int)" ); 178 QCopEnvelope e ( "QPE/Obex", "btreceive(int)" );
179 e << ( d ? 1 : 0 ); 179 e << ( d ? 1 : 0 );
180 } 180 }
181 bluezReceiveActive = (bool)(d != 0); 181 bluezReceiveActive = (bool)(d != 0);
182 bluezReceiveChanged = true; 182 bluezReceiveChanged = true;
183 return d; 183 return d;
184 } 184 }
185 185
186 // FIXME mbhaynie 186 // FIXME mbhaynie
187 // receiver for QCopChannel("QPE/Bluetooth") messages. 187 // receiver for QCopChannel("QPE/Bluetooth") messages.
188 void BluezApplet::slotMessage( const QCString& str, const QByteArray& ) 188 void BluezApplet::slotMessage( const QCString& str, const QByteArray& )
189 { 189 {
190 if ( str == "enableBluetooth()") { 190 if ( str == "enableBluetooth()") {
191 m_wasOn = checkBluezStatus(); 191 m_wasOn = checkBluezStatus();
192 if (!m_wasOn) { 192 if (!m_wasOn) {
193 setBluezStatus(1, true); 193 setBluezStatus(1, true);
194 sleep(2); 194 sleep(2);
195 } 195 }
196 } 196 }
197 else if ( str == "disableBluetooth()") { 197 else if ( str == "disableBluetooth()") {
198 /* 198 /*
199 * We can down BT only if it was started by qcop. We don't want 199 * We can down BT only if it was started by qcop. We don't want
200 * to down BT started from menu an break our networking connection 200 * to down BT started from menu an break our networking connection
201 */ 201 */
202 if (checkBluezStatus() && !m_wasOn) 202 if (checkBluezStatus() && !m_wasOn)
203 setBluezStatus(0); 203 setBluezStatus(0);
204 doListDevice = false; 204 doListDevice = false;
205 } 205 }
206 else if ( str == "listDevices()") { 206 else if ( str == "listDevices()") {
207 if (checkBluezStatus()) { 207 if (checkBluezStatus()) {
208 doListDevice = false; 208 doListDevice = false;
209 timerEvent(0); 209 timerEvent(0);
210 if (!btManager) { 210 if (!btManager) {
211 btManager = new Manager("hci0"); 211 btManager = new Manager("hci0");
212 connect( btManager, 212 connect( btManager,
213 SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ), 213 SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ),
214 this, SLOT( fillList(const QString&, RemoteDevice::ValueList) ) ) ; 214 this, SLOT( fillList(const QString&, RemoteDevice::ValueList) ) ) ;
215 } 215 }
216 btManager->searchDevices(); 216 btManager->searchDevices();
217 isScanning = true; 217 isScanning = true;
218 } else 218 } else
219 doListDevice = true; 219 doListDevice = true;
220 } 220 }
221 } 221 }
222 222
223 // Once the hcitool scan is complete, report back. 223 // Once the hcitool scan is complete, report back.
224 void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList) 224 void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList)
225 { 225 {
226 QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)"); 226 QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)");
227 227
228 QMap<QString, QString> btmap; 228 QMap<QString, QString> btmap;
229 229
230 RemoteDevice::ValueList::Iterator it; 230 RemoteDevice::ValueList::Iterator it;
231 for( it = deviceList.begin(); it != deviceList.end(); ++it ) 231 for( it = deviceList.begin(); it != deviceList.end(); ++it )
232 btmap[(*it).name()] = (*it).mac(); 232 btmap[(*it).name()] = (*it).mac();
233 233
234 e << btmap; 234 e << btmap;
235 isScanning = false; 235 isScanning = false;
236 timerEvent( 0 ); 236 timerEvent( 0 );
237 } 237 }
238 238
239 void BluezApplet::mousePressEvent( QMouseEvent *) { 239 void BluezApplet::mousePressEvent( QMouseEvent *) {
240 240
241 QPopupMenu *menu = new QPopupMenu(); 241 QPopupMenu *menu = new QPopupMenu();
242 QPopupMenu *signal = new QPopupMenu(); 242 QPopupMenu *signal = new QPopupMenu();
243 int ret=0; 243 int ret=0;
244 244
245 /* Refresh active state */ 245 /* Refresh active state */
246 timerEvent( 0 ); 246 timerEvent( 0 );
247 247
248 248
249 if (bluezactive) { 249 if (bluezactive) {
250 menu->insertItem( tr("Disable Bluetooth"), 0 ); 250 menu->insertItem( tr("Disable Bluetooth"), 0 );
251 } else { 251 } else {
252 menu->insertItem( tr("Enable Bluetooth"), 1 ); 252 menu->insertItem( tr("Enable Bluetooth"), 1 );
253 } 253 }
254 254
255 menu->insertItem( tr("Launch manager"), 2 ); 255 menu->insertItem( tr("Launch manager"), 2 );
256 256
257 menu->insertSeparator(6); 257 menu->insertSeparator(6);
258 //menu->insertItem( tr("Signal strength"), signal, 5); 258 //menu->insertItem( tr("Signal strength"), signal, 5);
259 //menu->insertSeparator(8); 259 //menu->insertSeparator(8);
260 260
261 if (bluezactive) { 261 if (bluezactive) {
262 if (bluezReceiveActive) { 262 if (bluezReceiveActive) {
263 menu->insertItem( tr("Disable receive"), 3 ); 263 menu->insertItem( tr("Disable receive"), 3 );
264 } else { 264 } else {
265 menu->insertItem( tr("Enable receive"), 4 ); 265 menu->insertItem( tr("Enable receive"), 4 );
266 } 266 }
267 } 267 }
268 268
269 QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) ); 269 QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) );
270 ret = menu->exec(p, 0); 270 ret = menu->exec(p, 0);
271 menu->hide(); 271 menu->hide();
272 272
273 switch(ret) { 273 switch(ret) {
274 case 0: 274 case 0:
275 setBluezStatus(0); 275 setBluezStatus(0);
276 timerEvent( 0 ); 276 timerEvent( 0 );
277 break; 277 break;
278 case 1: 278 case 1:
279 setBluezStatus(1); 279 setBluezStatus(1);
280 timerEvent( 0 ); 280 timerEvent( 0 );
281 break; 281 break;
282 case 2: 282 case 2:
283 // start bluetoothmanager 283 // start bluetoothmanager
284 launchManager(); 284 launchManager();
285 timerEvent( 0 ); 285 timerEvent( 0 );
286 break; 286 break;
287 case 3: 287 case 3:
288 setObexRecieveStatus(0); 288 setObexRecieveStatus(0);
289 timerEvent( 0 ); 289 timerEvent( 0 );
290 break; 290 break;
291 case 4: 291 case 4:
292 setObexRecieveStatus(1); 292 setObexRecieveStatus(1);
293 timerEvent( 0 ); 293 timerEvent( 0 );
294 break; 294 break;
295 //case 7: 295 //case 7:
296 // With table of currently-detected devices. 296 // With table of currently-detected devices.
297 } 297 }
298 298
299 delete signal; 299 delete signal;
300 delete menu; 300 delete menu;
301 } 301 }
302 302
303 303
304/** 304/**
305 * Launches the bluetooth manager 305 * Launches the bluetooth manager
306 */ 306 */
307 void BluezApplet::launchManager() { 307 void BluezApplet::launchManager() {
308 QCopEnvelope e("QPE/System", "execute(QString)"); 308 QCopEnvelope e("QPE/System", "execute(QString)");
309 e << QString("bluetooth-manager"); 309 e << QString("bluetooth-manager");
310 } 310 }
311 311
312/** 312/**
313 * Refresh timer 313 * Refresh timer
314 * @param the timer event 314 * @param the timer event
315 */ 315 */
316 void BluezApplet::timerEvent( QTimerEvent * ) { 316 void BluezApplet::timerEvent( QTimerEvent * ) {
317 bool oldactive = bluezactive; 317 bool oldactive = bluezactive;
318 int olddiscovery = bluezDiscoveryActive; 318 int olddiscovery = bluezDiscoveryActive;
319 319
320 bluezactive = checkBluezStatus(); 320 bluezactive = checkBluezStatus();
321 bluezDiscoveryActive = checkBluezDiscoveryStatus(); 321 bluezDiscoveryActive = checkBluezDiscoveryStatus();
322 322
323 if ((bluezactive != oldactive) || 323 if ((bluezactive != oldactive) ||
324 (bluezDiscoveryActive != olddiscovery) || 324 (bluezDiscoveryActive != olddiscovery) ||
325 bluezReceiveChanged) 325 bluezReceiveChanged)
326 update(); 326 update();
327 if (bluezactive && doListDevice) { 327 if (bluezactive && doListDevice) {
328 const QByteArray arr; 328 const QByteArray arr;
329 slotMessage("listDevices()", arr); 329 slotMessage("listDevices()", arr);
330 } 330 }
331 if (bluezReceiveChanged) 331 if (bluezReceiveChanged)
332 bluezReceiveChanged = false; 332 bluezReceiveChanged = false;
333 } 333 }
334 334
335/** 335/**