summaryrefslogtreecommitdiff
authorkorovkin <korovkin>2006-04-24 16:05:26 (UTC)
committer korovkin <korovkin>2006-04-24 16:05:26 (UTC)
commit71722eacaa44f3b738318d68dc6148c9e2ff643d (patch) (unidiff)
tree2c8eed7019d47db0885c1a0ba0ff6dc0fc16effb
parent2457dde10b8108a74f160b5d1c6bdbb877e0099a (diff)
downloadopie-71722eacaa44f3b738318d68dc6148c9e2ff643d.zip
opie-71722eacaa44f3b738318d68dc6148c9e2ff643d.tar.gz
opie-71722eacaa44f3b738318d68dc6148c9e2ff643d.tar.bz2
On start runs /etc/init.d/bluetooth stop.
On setBluezStatus runs /etc/init.d/bluetooth start or stop. If "listDevices()" is called prior to "enableBluetooth()", postpone the action. If BT was enabled befor "enableBluetooth()" was received, do not disable it on "disableBluetooth()". Timer period became twice shorter. When "listDevices()" received, show browsing icon. Added OPIE120 for compatibility.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.cpp143
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.h6
2 files changed, 114 insertions, 35 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp
index 5676e4f..9c6c71d 100644
--- a/noncore/net/opietooth/applet/bluezapplet.cpp
+++ b/noncore/net/opietooth/applet/bluezapplet.cpp
@@ -13,190 +13,243 @@
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 <qpe/applnk.h> 38#include <qpe/applnk.h>
38#include <qpe/qcopenvelope_qws.h> 39#include <qpe/qcopenvelope_qws.h>
39#include <qpe/config.h> 40#include <qpe/config.h>
40using namespace Opie::Core; 41using namespace Opie::Core;
41 42
42/* QT */ 43/* QT */
43#include <qapplication.h> 44#include <qapplication.h>
44#include <qpoint.h> 45#include <qpoint.h>
45#include <qpainter.h> 46#include <qpainter.h>
46#include <qlayout.h> 47#include <qlayout.h>
47#include <qframe.h> 48#include <qframe.h>
48#include <qpixmap.h> 49#include <qpixmap.h>
49#include <qstring.h> 50#include <qstring.h>
50#include <qtimer.h> 51#include <qtimer.h>
51#include <qpopupmenu.h> 52#include <qpopupmenu.h>
53#include <qmessagebox.h>
52 54
53/* STD */ 55/* STD */
54#include <device.h> 56#include <device.h>
55 57
56namespace OpieTooth { 58// #define OPIE120 // undefine it fo the latest OPIE
57 59
60namespace OpieTooth {
58 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) { 61 BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) {
59 setFixedHeight( AppLnk::smallIconSize() ); 62 setFixedHeight( AppLnk::smallIconSize() );
60 setFixedWidth( AppLnk::smallIconSize() ); 63 setFixedWidth( AppLnk::smallIconSize() );
64#ifdef OPIE120
65 bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" );
66 bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" );
67 bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass.png" );
68#else
61 bluezOnPixmap = OResource::loadImage( "bluetoothapplet/bluezon", OResource::SmallIcon ); 69 bluezOnPixmap = OResource::loadImage( "bluetoothapplet/bluezon", OResource::SmallIcon );
62 bluezOffPixmap = OResource::loadImage( "bluetoothapplet/bluezoff", Opie::Core::OResource::SmallIcon ); 70 bluezOffPixmap = OResource::loadImage( "bluetoothapplet/bluezoff", Opie::Core::OResource::SmallIcon );
63 bluezDiscoveryOnPixmap = OResource::loadImage( "bluetoothapplet/bluezondiscovery", Opie::Core::OResource::SmallIcon ); 71 bluezDiscoveryOnPixmap = OResource::loadImage( "bluetoothapplet/bluezondiscovery", Opie::Core::OResource::SmallIcon );
64 startTimer(4000); 72#endif
73 startTimer(2000);
65 btDevice = 0; 74 btDevice = 0;
66 btManager = 0; 75 btManager = 0;
67 bluezactive = false; 76 bluezactive = false;
68 bluezDiscoveryActive = false; 77 bluezDiscoveryActive = false;
78 doListDevice = false;
79 isScanning = false;
80 m_wasOn = false;
69 81
70 // 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.
71 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); 83 QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this );
72 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), 84 connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ),
73 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); 85 this, SLOT(slotMessage(const QCString&,const QByteArray&) ) );
86
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 }
74 } 96 }
75 97
76 BluezApplet::~BluezApplet() { 98 BluezApplet::~BluezApplet() {
77 if ( btDevice ) { 99 if ( btDevice ) {
78 delete btDevice; 100 delete btDevice;
79 } 101 }
80 if ( btManager ) { 102 if ( btManager ) {
81 delete btManager; 103 delete btManager;
82 } 104 }
83 } 105 }
84 106
85int BluezApplet::position() 107int BluezApplet::position()
86{ 108{
87 return 6; 109 return 6;
88} 110}
89 111
90 112
91 bool BluezApplet::checkBluezStatus() { 113 bool BluezApplet::checkBluezStatus() {
92 if (btDevice) { 114 if (btDevice) {
93 if (btDevice->isLoaded() ) { 115 if (btDevice->isLoaded() ) {
94 return true; 116 return true;
95 } else { 117 } else {
96 return false; 118 return false;
97 } 119 }
98 } else { 120 } else {
99 return false; 121 return false;
100 } 122 }
101 } 123 }
102 124
103 int BluezApplet::setBluezStatus(int c) { 125 int BluezApplet::setBluezStatus(int c) {
104 126
127 OProcess* btstart = new OProcess();
105 if ( c == 1 ) { 128 if ( c == 1 ) {
106 switch ( ODevice::inst()->model() ) { 129 switch ( ODevice::inst()->model() ) {
107 case Model_iPAQ_H39xx: 130 case Model_iPAQ_H39xx:
108 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" ); 131 btDevice = new Device( "/dev/tts/1", "bcsp", "921600" );
109 break; 132 break;
110 133
111 case Model_iPAQ_H5xxx: 134 case Model_iPAQ_H5xxx:
112 btDevice = new Device( "/dev/tts/1", "any", "921600" ); 135 btDevice = new Device( "/dev/tts/1", "any", "921600" );
113 break; 136 break;
114 137
138#ifndef OPIE120
115 case Model_MyPal_716: 139 case Model_MyPal_716:
116 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" ); 140 btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" );
117 break; 141 break;
142#endif
118 143
119 default: 144 default:
120 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" ); 145 btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" );
121 break; 146 break;
122 } 147 }
148 *btstart << "/etc/init.d/bluetooth" << "start";
149 btstart->setUseShell(true);
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 }
123 } else { 156 } else {
157 *btstart << "/etc/init.d/bluetooth" << "stop";
158 btstart->setUseShell(true);
159 if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
160 delete btstart;
161 else {
162 connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
163 this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
164 }
124 if ( btDevice ) { 165 if ( btDevice ) {
125 delete btDevice; 166 delete btDevice;
126 btDevice = 0; 167 btDevice = 0;
127 } 168 }
128 } 169 }
129 return 0; 170 return 0;
130 } 171 }
131 172
132 int BluezApplet::checkBluezDiscoveryStatus() { 173 int BluezApplet::checkBluezDiscoveryStatus() {
133 return bluezDiscoveryActive; 174 return isScanning;
134 } 175 }
135 176
136 int BluezApplet::setBluezDiscoveryStatus(int d) { 177 int BluezApplet::setBluezDiscoveryStatus(int d) {
137 return bluezDiscoveryActive=d; 178 return bluezDiscoveryActive = d;
138 } 179 }
139 180
140 // FIXME mbhaynie 181 // FIXME mbhaynie
141 // receiver for QCopChannel("QPE/Bluetooth") messages. 182 // receiver for QCopChannel("QPE/Bluetooth") messages.
142 void BluezApplet::slotMessage( const QCString& str, const QByteArray& ) 183 void BluezApplet::slotMessage( const QCString& str, const QByteArray& )
143 { 184 {
144 if ( str == "enableBluetooth()") { 185 if ( str == "enableBluetooth()") {
145 if (!checkBluezStatus()) { 186 m_wasOn = checkBluezStatus();
146 setBluezStatus(1); 187 if (!m_wasOn) {
147 } 188 setBluezStatus(1);
148 } else if ( str == "disableBluetooth()") { 189 sleep(2);
149 if (checkBluezStatus()) { 190 }
150 // setBluezStatus(0); 191 }
151 } 192 else if ( str == "disableBluetooth()") {
152 } else if ( str == "listDevices()") { 193 /*
153 if (!btManager) 194 * We can down BT only if it was started by qcop. We don't want
154 { 195 * to down BT started from menu an break our networking connection
155 btManager = new Manager("hci0"); 196 */
156 connect( btManager, SIGNAL( foundDevices(const QString&,RemoteDevice::ValueList) ), 197 if (checkBluezStatus() && !m_wasOn)
157 this, SLOT( fillList(const QString&,RemoteDevice::ValueList) ) ) ; 198 setBluezStatus(0);
199 doListDevice = false;
158 } 200 }
159 201 else if ( str == "listDevices()") {
160 btManager->searchDevices(); 202 if (checkBluezStatus()) {
161 } 203 doListDevice = false;
204 timerEvent(0);
205 if (!btManager) {
206 btManager = new Manager("hci0");
207 connect( btManager,
208 SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ),
209 this, SLOT( fillList(const QString&, RemoteDevice::ValueList) ) ) ;
210 }
211 btManager->searchDevices();
212 isScanning = true;
213 } else
214 doListDevice = true;
215 }
162 } 216 }
163 217
164 // Once the hcitool scan is complete, report back. 218 // Once the hcitool scan is complete, report back.
165 void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList) 219 void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList)
166 { 220 {
167 QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)"); 221 QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)");
168 222
169 QStringList list; 223 QMap<QString, QString> btmap;
170 QMap<QString, QString> btmap;
171 224
172 RemoteDevice::ValueList::Iterator it; 225 RemoteDevice::ValueList::Iterator it;
173 for( it = deviceList.begin(); it != deviceList.end(); ++it ) 226 for( it = deviceList.begin(); it != deviceList.end(); ++it )
174 { 227 btmap[(*it).name()] = (*it).mac();
175 btmap[(*it).name()] = (*it).mac();
176 }
177 228
178 e << btmap; 229 e << btmap;
230 isScanning = false;
231 timerEvent( 0 );
179 } 232 }
180 233
181 void BluezApplet::mousePressEvent( QMouseEvent *) { 234 void BluezApplet::mousePressEvent( QMouseEvent *) {
182 235
183 QPopupMenu *menu = new QPopupMenu(); 236 QPopupMenu *menu = new QPopupMenu();
184 QPopupMenu *signal = new QPopupMenu(); 237 QPopupMenu *signal = new QPopupMenu();
185 int ret=0; 238 int ret=0;
186 239
187 /* Refresh active state */ 240 /* Refresh active state */
188 timerEvent( 0 ); 241 timerEvent( 0 );
189 242
190 243
191 if (bluezactive) { 244 if (bluezactive) {
192 menu->insertItem( tr("Disable Bluetooth"), 0 ); 245 menu->insertItem( tr("Disable Bluetooth"), 0 );
193 } else { 246 } else {
194 menu->insertItem( tr("Enable Bluetooth"), 1 ); 247 menu->insertItem( tr("Enable Bluetooth"), 1 );
195 } 248 }
196 249
197 menu->insertItem( tr("Launch manager"), 2 ); 250 menu->insertItem( tr("Launch manager"), 2 );
198 251
199 menu->insertSeparator(6); 252 menu->insertSeparator(6);
200 //menu->insertItem( tr("Signal strength"), signal, 5); 253 //menu->insertItem( tr("Signal strength"), signal, 5);
201 //menu->insertSeparator(8); 254 //menu->insertSeparator(8);
202 255
@@ -239,51 +292,73 @@ int BluezApplet::position()
239 delete signal; 292 delete signal;
240 delete menu; 293 delete menu;
241 } 294 }
242 295
243 296
244/** 297/**
245 * Launches the bluetooth manager 298 * Launches the bluetooth manager
246 */ 299 */
247 void BluezApplet::launchManager() { 300 void BluezApplet::launchManager() {
248 QCopEnvelope e("QPE/System", "execute(QString)"); 301 QCopEnvelope e("QPE/System", "execute(QString)");
249 e << QString("bluetooth-manager"); 302 e << QString("bluetooth-manager");
250 } 303 }
251 304
252/** 305/**
253 * Refresh timer 306 * Refresh timer
254 * @param the timer event 307 * @param the timer event
255 */ 308 */
256 void BluezApplet::timerEvent( QTimerEvent * ) { 309 void BluezApplet::timerEvent( QTimerEvent * ) {
257 bool oldactive = bluezactive; 310 bool oldactive = bluezactive;
258 int olddiscovery = bluezDiscoveryActive; 311 int olddiscovery = bluezDiscoveryActive;
259 312
260 bluezactive = checkBluezStatus(); 313 bluezactive = checkBluezStatus();
261 bluezDiscoveryActive = checkBluezDiscoveryStatus(); 314 bluezDiscoveryActive = checkBluezDiscoveryStatus();
262 315
263 if ((bluezactive != oldactive) || (bluezDiscoveryActive != olddiscovery)) { 316 if ((bluezactive != oldactive) ||
317 (bluezDiscoveryActive != olddiscovery))
264 update(); 318 update();
319 if (bluezactive && doListDevice) {
320 const QByteArray arr;
321 slotMessage("listDevices()", arr);
265 } 322 }
266 } 323 }
267 324
268/** 325/**
269 * Implementation of the paint event 326 * Implementation of the paint event
270 * @param the QPaintEvent 327 * @param the QPaintEvent
271 */ 328 */
272 void BluezApplet::paintEvent( QPaintEvent* ) { 329 void BluezApplet::paintEvent( QPaintEvent* ) {
273 QPainter p(this); 330 QPainter p(this);
274 odebug << "paint bluetooth pixmap" << oendl; 331 odebug << "paint bluetooth pixmap" << oendl;
275 332
276 if (bluezactive > 0) { 333 if (bluezactive) {
334#ifdef OPIE120
335 p.drawPixmap( 0, -1, bluezOnPixmap );
336#else
277 p.drawPixmap( 0, 0, bluezOnPixmap ); 337 p.drawPixmap( 0, 0, bluezOnPixmap );
338#endif
278 } else { 339 } else {
340#ifdef OPIE120
341 p.drawPixmap( 0, -1, bluezOffPixmap );
342#else
279 p.drawPixmap( 0, 0, bluezOffPixmap ); 343 p.drawPixmap( 0, 0, bluezOffPixmap );
344#endif
280 } 345 }
281 346
282 if (bluezDiscoveryActive > 0) { 347 if (bluezDiscoveryActive) {
283 p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap ); 348 p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap );
284 } 349 }
285 } 350 }
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 }
286}; 360};
287 361
362
288EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet ) 363EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet )
289 364
diff --git a/noncore/net/opietooth/applet/bluezapplet.h b/noncore/net/opietooth/applet/bluezapplet.h
index c096e29..85022bb 100644
--- a/noncore/net/opietooth/applet/bluezapplet.h
+++ b/noncore/net/opietooth/applet/bluezapplet.h
@@ -12,68 +12,72 @@
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#ifndef __BLUEZAPPLET_H__ 29#ifndef __BLUEZAPPLET_H__
30#define __BLUEZAPPLET_H__ 30#define __BLUEZAPPLET_H__
31 31
32#include <qwidget.h> 32#include <qwidget.h>
33#include <qpixmap.h> 33#include <qpixmap.h>
34#include <qtimer.h> 34#include <qtimer.h>
35#include <manager.h> 35#include <manager.h>
36#include <opie2/oprocess.h>
36 37
37namespace OpieTooth { 38namespace OpieTooth {
38 class Device; 39 class Device;
39 40
40 class BluezApplet : public QWidget { 41 class BluezApplet : public QWidget {
41 Q_OBJECT 42 Q_OBJECT
42 public: 43 public:
43 BluezApplet( QWidget *parent = 0, const char *name=0 ); 44 BluezApplet( QWidget *parent = 0, const char *name=0 );
44 ~BluezApplet(); 45 ~BluezApplet();
45 static int position(); 46 static int position();
46 protected: 47 protected:
47 void timerEvent(QTimerEvent *te ); 48 void timerEvent(QTimerEvent *te );
48 49
49public slots: 50public slots:
50 void fillList( const QString& device, RemoteDevice::ValueList list ); 51 void fillList( const QString& device, RemoteDevice::ValueList list );
51 52
52 private: 53 private:
53 void mousePressEvent( QMouseEvent * ); 54 void mousePressEvent( QMouseEvent * );
54 void paintEvent( QPaintEvent* ); 55 void paintEvent( QPaintEvent* );
55 void launchManager(); 56 void launchManager();
56 bool checkBluezStatus(); 57 bool checkBluezStatus();
57 int setBluezStatus(int); 58 int setBluezStatus(int);
58 int checkBluezDiscoveryStatus(); 59 int checkBluezDiscoveryStatus();
59 int setBluezDiscoveryStatus(int); 60 int setBluezDiscoveryStatus(int);
60 61
61 private: 62 private:
62 Device* btDevice; 63 Device* btDevice;
63 Manager *btManager; 64 Manager *btManager;
64 QPixmap bluezOnPixmap; 65 QPixmap bluezOnPixmap;
65 QPixmap bluezOffPixmap; 66 QPixmap bluezOffPixmap;
66 QPixmap bluezDiscoveryOnPixmap; 67 QPixmap bluezDiscoveryOnPixmap;
67 bool bluezactive; 68 bool bluezactive;
68 bool bluezDiscoveryActive; 69 bool bluezDiscoveryActive;
70 bool doListDevice; //If I have to list devices after bringing BT up?
71 bool isScanning; //If I'm scanning devices
72 bool m_wasOn; //If BT was started by menu?
69 73
70private slots: 74private slots:
71 void slotMessage( const QCString& , const QByteArray& ); 75 void slotMessage( const QCString& , const QByteArray& );
72 76 void slotProcessExited(Opie::Core::OProcess* proc);
73 77
74 }; 78 };
75}; 79};
76 80
77 81
78#endif 82#endif
79 83