summaryrefslogtreecommitdiff
authorkorovkin <korovkin>2006-05-09 12:38:24 (UTC)
committer korovkin <korovkin>2006-05-09 12:38:24 (UTC)
commit620d55ae3b94fa8d2fa696b6626893e4520c3a02 (patch) (unidiff)
treeca1296808dfac6fa6c74086f4dda6af525d7b151
parentdc719be35432469c24dd8d10136c1ea25c6861d2 (diff)
downloadopie-620d55ae3b94fa8d2fa696b6626893e4520c3a02.zip
opie-620d55ae3b94fa8d2fa696b6626893e4520c3a02.tar.gz
opie-620d55ae3b94fa8d2fa696b6626893e4520c3a02.tar.bz2
Instead of calling a process, do ::system on stop and use QCopEnvelope on start.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.cpp56
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.h2
2 files changed, 16 insertions, 42 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp
index 9c6c71d..90b0c6d 100644
--- a/noncore/net/opietooth/applet/bluezapplet.cpp
+++ b/noncore/net/opietooth/applet/bluezapplet.cpp
@@ -50,17 +50,17 @@ using namespace Opie::Core;
50#include <qstring.h> 50#include <qstring.h>
51#include <qtimer.h> 51#include <qtimer.h>
52#include <qpopupmenu.h> 52#include <qpopupmenu.h>
53#include <qmessagebox.h> 53#include <qmessagebox.h>
54 54
55/* STD */ 55/* STD */
56#include <device.h> 56#include <device.h>
57 57
58// #define OPIE120 // undefine it fo the latest OPIE 58#define OPIE120 // undefine it fo the latest OPIE
59 59
60namespace OpieTooth { 60namespace OpieTooth {
61 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) { 61 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) {
62 setFixedHeight( AppLnk::smallIconSize() ); 62 setFixedHeight( AppLnk::smallIconSize() );
63 setFixedWidth( AppLnk::smallIconSize() ); 63 setFixedWidth( AppLnk::smallIconSize() );
64#ifdef OPIE120 64#ifdef OPIE120
65 bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" ); 65 bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" );
66 bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" ); 66 bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" );
@@ -78,58 +78,51 @@ namespace OpieTooth {
78 doListDevice = false; 78 doListDevice = false;
79 isScanning = false; 79 isScanning = false;
80 m_wasOn = false; 80 m_wasOn = false;
81 81
82 // TODO: determine whether this channel has to be closed at destruction time. 82 // TODO: determine whether this channel has to be closed at destruction time.
83 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); 83 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this );
84 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), 84 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ),
85 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); 85 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) );
86 86 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
87 OProcess* btstart = new OProcess();
88 *btstart << "/etc/init.d/bluetooth" << "stop";
89 btstart->setUseShell(true);
90 if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
91 delete btstart;
92 else {
93 connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
94 this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
95 }
96 } 87 }
97 88
98 BluezApplet::~BluezApplet() { 89 BluezApplet::~BluezApplet() {
99 if ( btDevice ) { 90 if ( btDevice ) {
100 delete btDevice; 91 delete btDevice;
101 } 92 }
102 if ( btManager ) { 93 if ( btManager ) {
103 delete btManager; 94 delete btManager;
104 } 95 }
105 } 96 }
106 97
107int BluezApplet::position() 98 int BluezApplet::position()
108{ 99 {
109 return 6; 100 return 6;
110} 101 }
111 102
112 103
113 bool BluezApplet::checkBluezStatus() { 104 bool BluezApplet::checkBluezStatus() {
114 if (btDevice) { 105 if (btDevice) {
115 if (btDevice->isLoaded() ) { 106 if (btDevice->isLoaded() ) {
107 odebug << "btDevice isLoaded" << oendl;
116 return true; 108 return true;
117 } else { 109 } else {
110 odebug << "btDevice is NOT loaded" << oendl;
118 return false; 111 return false;
119 } 112 }
120 } else { 113 } else {
114 odebug << "btDevice is ZERO" << oendl;
121 return false; 115 return false;
122 } 116 }
123 } 117 }
124 118
125 int BluezApplet::setBluezStatus(int c) { 119 int BluezApplet::setBluezStatus(int c) {
126 120
127 OProcess* btstart = new OProcess();
128 if ( c == 1 ) { 121 if ( c == 1 ) {
129 switch ( ODevice::inst()->model() ) { 122 switch ( ODevice::inst()->model() ) {
130 case Model_iPAQ_H39xx: 123 case Model_iPAQ_H39xx:
131 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" ); 124 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" );
132 break; 125 break;
133 126
134 case Model_iPAQ_H5xxx: 127 case Model_iPAQ_H5xxx:
135 btDevice = new Device( "/dev/tts/1", "any", "921600" ); 128 btDevice = new Device( "/dev/tts/1", "any", "921600" );
@@ -140,32 +133,23 @@ int BluezApplet::position()
140 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" ); 133 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" );
141 break; 134 break;
142#endif 135#endif
143 136
144 default: 137 default:
145 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" ); 138 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" );
146 break; 139 break;
147 } 140 }
148 *btstart << "/etc/init.d/bluetooth" << "start"; 141 QCopEnvelope e("QPE/System", "execute(QString)");
149 btstart->setUseShell(true); 142 e << QString("/etc/init.d/bluetooth start");
150 if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
151 delete btstart;
152 else {
153 connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
154 this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
155 }
156 } else { 143 } else {
157 *btstart << "/etc/init.d/bluetooth" << "stop"; 144 ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
158 btstart->setUseShell(true); 145 if ( btManager ) {
159 if (!btstart->start(OProcess::DontCare, OProcess::AllOutput)) 146 delete btManager;
160 delete btstart; 147 btManager = 0;
161 else {
162 connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
163 this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
164 } 148 }
165 if ( btDevice ) { 149 if ( btDevice ) {
166 delete btDevice; 150 delete btDevice;
167 btDevice = 0; 151 btDevice = 0;
168 } 152 }
169 } 153 }
170 return 0; 154 return 0;
171 } 155 }
@@ -192,17 +176,17 @@ int BluezApplet::position()
192 else if ( str == "disableBluetooth()") { 176 else if ( str == "disableBluetooth()") {
193 /* 177 /*
194 * We can down BT only if it was started by qcop. We don't want 178 * We can down BT only if it was started by qcop. We don't want
195 * to down BT started from menu an break our networking connection 179 * to down BT started from menu an break our networking connection
196 */ 180 */
197 if (checkBluezStatus() && !m_wasOn) 181 if (checkBluezStatus() && !m_wasOn)
198 setBluezStatus(0); 182 setBluezStatus(0);
199 doListDevice = false; 183 doListDevice = false;
200 } 184 }
201 else if ( str == "listDevices()") { 185 else if ( str == "listDevices()") {
202 if (checkBluezStatus()) { 186 if (checkBluezStatus()) {
203 doListDevice = false; 187 doListDevice = false;
204 timerEvent(0); 188 timerEvent(0);
205 if (!btManager) { 189 if (!btManager) {
206 btManager = new Manager("hci0"); 190 btManager = new Manager("hci0");
207 connect( btManager, 191 connect( btManager,
208 SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ), 192 SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ),
@@ -257,16 +241,17 @@ int BluezApplet::position()
257 menu->insertItem( tr("Disable discovery"), 3 ); 241 menu->insertItem( tr("Disable discovery"), 3 );
258 } else { 242 } else {
259 menu->insertItem( tr("Enable discovery"), 4 ); 243 menu->insertItem( tr("Enable discovery"), 4 );
260 } 244 }
261 245
262 246
263 QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) ); 247 QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) );
264 ret = menu->exec(p, 0); 248 ret = menu->exec(p, 0);
249 menu->hide();
265 250
266 switch(ret) { 251 switch(ret) {
267 case 0: 252 case 0:
268 setBluezStatus(0); 253 setBluezStatus(0);
269 timerEvent( 0 ); 254 timerEvent( 0 );
270 break; 255 break;
271 case 1: 256 case 1:
272 setBluezStatus(1); 257 setBluezStatus(1);
@@ -343,22 +328,13 @@ int BluezApplet::position()
343 p.drawPixmap( 0, 0, bluezOffPixmap ); 328 p.drawPixmap( 0, 0, bluezOffPixmap );
344#endif 329#endif
345 } 330 }
346 331
347 if (bluezDiscoveryActive) { 332 if (bluezDiscoveryActive) {
348 p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap ); 333 p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap );
349 } 334 }
350 } 335 }
351
352/**
353 * Implementation of the process finish
354 * @param the finished process
355 */
356 void BluezApplet::slotProcessExited(OProcess* proc)
357 {
358 delete proc;
359 }
360}; 336};
361 337
362 338
363EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet ) 339EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet )
364 340
diff --git a/noncore/net/opietooth/applet/bluezapplet.h b/noncore/net/opietooth/applet/bluezapplet.h
index 85022bb..90bee3b 100644
--- a/noncore/net/opietooth/applet/bluezapplet.h
+++ b/noncore/net/opietooth/applet/bluezapplet.h
@@ -68,16 +68,14 @@ public slots:
68 bool bluezactive; 68 bool bluezactive;
69 bool bluezDiscoveryActive; 69 bool bluezDiscoveryActive;
70 bool doListDevice; //If I have to list devices after bringing BT up? 70 bool doListDevice; //If I have to list devices after bringing BT up?
71 bool isScanning; //If I'm scanning devices 71 bool isScanning; //If I'm scanning devices
72 bool m_wasOn; //If BT was started by menu? 72 bool m_wasOn; //If BT was started by menu?
73 73
74private slots: 74private slots:
75 void slotMessage( const QCString& , const QByteArray& ); 75 void slotMessage( const QCString& , const QByteArray& );
76 void slotProcessExited(Opie::Core::OProcess* proc);
77
78 }; 76 };
79}; 77};
80 78
81 79
82#endif 80#endif
83 81