summaryrefslogtreecommitdiff
Side-by-side diff
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
@@ -34,191 +34,175 @@
#include <opie2/odevice.h>
#include <opie2/odebug.h>
#include <opie2/oresource.h>
#include <opie2/oprocess.h>
#include <qpe/applnk.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/config.h>
using namespace Opie::Core;
/* QT */
#include <qapplication.h>
#include <qpoint.h>
#include <qpainter.h>
#include <qlayout.h>
#include <qframe.h>
#include <qpixmap.h>
#include <qstring.h>
#include <qtimer.h>
#include <qpopupmenu.h>
#include <qmessagebox.h>
/* STD */
#include <device.h>
-// #define OPIE120 // undefine it fo the latest OPIE
+#define OPIE120 // undefine it fo the latest OPIE
namespace OpieTooth {
BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) {
setFixedHeight( AppLnk::smallIconSize() );
setFixedWidth( AppLnk::smallIconSize() );
#ifdef OPIE120
bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" );
bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" );
bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass.png" );
#else
bluezOnPixmap = OResource::loadImage( "bluetoothapplet/bluezon", OResource::SmallIcon );
bluezOffPixmap = OResource::loadImage( "bluetoothapplet/bluezoff", Opie::Core::OResource::SmallIcon );
bluezDiscoveryOnPixmap = OResource::loadImage( "bluetoothapplet/bluezondiscovery", Opie::Core::OResource::SmallIcon );
#endif
startTimer(2000);
btDevice = 0;
btManager = 0;
bluezactive = false;
bluezDiscoveryActive = false;
doListDevice = false;
isScanning = false;
m_wasOn = false;
// TODO: determine whether this channel has to be closed at destruction time.
QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this );
connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ),
this, SLOT(slotMessage(const QCString&,const QByteArray&) ) );
-
- OProcess* btstart = new OProcess();
- *btstart << "/etc/init.d/bluetooth" << "stop";
- btstart->setUseShell(true);
- if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
- delete btstart;
- else {
- connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
- this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
- }
+ ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
}
BluezApplet::~BluezApplet() {
if ( btDevice ) {
delete btDevice;
}
if ( btManager ) {
delete btManager;
}
}
-int BluezApplet::position()
-{
+ int BluezApplet::position()
+ {
return 6;
-}
+ }
bool BluezApplet::checkBluezStatus() {
if (btDevice) {
if (btDevice->isLoaded() ) {
+ odebug << "btDevice isLoaded" << oendl;
return true;
} else {
+ odebug << "btDevice is NOT loaded" << oendl;
return false;
}
} else {
+ odebug << "btDevice is ZERO" << oendl;
return false;
}
}
int BluezApplet::setBluezStatus(int c) {
- OProcess* btstart = new OProcess();
if ( c == 1 ) {
switch ( ODevice::inst()->model() ) {
case Model_iPAQ_H39xx:
btDevice = new Device( "/dev/tts/1", "bcsp", "921600" );
break;
case Model_iPAQ_H5xxx:
btDevice = new Device( "/dev/tts/1", "any", "921600" );
break;
#ifndef OPIE120
case Model_MyPal_716:
btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" );
break;
#endif
default:
btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" );
break;
}
- *btstart << "/etc/init.d/bluetooth" << "start";
- btstart->setUseShell(true);
- if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
- delete btstart;
- else {
- connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
- this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
- }
+ QCopEnvelope e("QPE/System", "execute(QString)");
+ e << QString("/etc/init.d/bluetooth start");
} else {
- *btstart << "/etc/init.d/bluetooth" << "stop";
- btstart->setUseShell(true);
- if (!btstart->start(OProcess::DontCare, OProcess::AllOutput))
- delete btstart;
- else {
- connect(btstart, SIGNAL(processExited(Opie::Core::OProcess*)),
- this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
+ ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null");
+ if ( btManager ) {
+ delete btManager;
+ btManager = 0;
}
if ( btDevice ) {
delete btDevice;
btDevice = 0;
}
}
return 0;
}
int BluezApplet::checkBluezDiscoveryStatus() {
return isScanning;
}
int BluezApplet::setBluezDiscoveryStatus(int d) {
return bluezDiscoveryActive = d;
}
// FIXME mbhaynie
// receiver for QCopChannel("QPE/Bluetooth") messages.
void BluezApplet::slotMessage( const QCString& str, const QByteArray& )
{
if ( str == "enableBluetooth()") {
m_wasOn = checkBluezStatus();
if (!m_wasOn) {
setBluezStatus(1);
sleep(2);
}
}
else if ( str == "disableBluetooth()") {
/*
* We can down BT only if it was started by qcop. We don't want
* to down BT started from menu an break our networking connection
*/
if (checkBluezStatus() && !m_wasOn)
setBluezStatus(0);
doListDevice = false;
- }
+ }
else if ( str == "listDevices()") {
if (checkBluezStatus()) {
doListDevice = false;
timerEvent(0);
if (!btManager) {
btManager = new Manager("hci0");
connect( btManager,
SIGNAL( foundDevices(const QString&, RemoteDevice::ValueList) ),
this, SLOT( fillList(const QString&, RemoteDevice::ValueList) ) ) ;
}
btManager->searchDevices();
isScanning = true;
} else
doListDevice = true;
}
}
// Once the hcitool scan is complete, report back.
void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList)
{
QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)");
QMap<QString, QString> btmap;
@@ -241,48 +225,49 @@ int BluezApplet::position()
timerEvent( 0 );
if (bluezactive) {
menu->insertItem( tr("Disable Bluetooth"), 0 );
} else {
menu->insertItem( tr("Enable Bluetooth"), 1 );
}
menu->insertItem( tr("Launch manager"), 2 );
menu->insertSeparator(6);
//menu->insertItem( tr("Signal strength"), signal, 5);
//menu->insertSeparator(8);
if (bluezDiscoveryActive) {
menu->insertItem( tr("Disable discovery"), 3 );
} else {
menu->insertItem( tr("Enable discovery"), 4 );
}
QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) );
ret = menu->exec(p, 0);
+ menu->hide();
switch(ret) {
case 0:
setBluezStatus(0);
timerEvent( 0 );
break;
case 1:
setBluezStatus(1);
timerEvent( 0 );
break;
case 2:
// start bluetoothmanager
launchManager();
timerEvent( 0 );
break;
case 3:
setBluezDiscoveryStatus(0);
timerEvent( 0 );
break;
case 4:
setBluezDiscoveryStatus(1);
timerEvent(0 );
break;
//case 7:
@@ -327,38 +312,29 @@ int BluezApplet::position()
* @param the QPaintEvent
*/
void BluezApplet::paintEvent( QPaintEvent* ) {
QPainter p(this);
odebug << "paint bluetooth pixmap" << oendl;
if (bluezactive) {
#ifdef OPIE120
p.drawPixmap( 0, -1, bluezOnPixmap );
#else
p.drawPixmap( 0, 0, bluezOnPixmap );
#endif
} else {
#ifdef OPIE120
p.drawPixmap( 0, -1, bluezOffPixmap );
#else
p.drawPixmap( 0, 0, bluezOffPixmap );
#endif
}
if (bluezDiscoveryActive) {
p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap );
}
}
-
-/**
- * Implementation of the process finish
- * @param the finished process
- */
- void BluezApplet::slotProcessExited(OProcess* proc)
- {
- delete proc;
- }
};
EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet )
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
@@ -52,32 +52,30 @@ public slots:
private:
void mousePressEvent( QMouseEvent * );
void paintEvent( QPaintEvent* );
void launchManager();
bool checkBluezStatus();
int setBluezStatus(int);
int checkBluezDiscoveryStatus();
int setBluezDiscoveryStatus(int);
private:
Device* btDevice;
Manager *btManager;
QPixmap bluezOnPixmap;
QPixmap bluezOffPixmap;
QPixmap bluezDiscoveryOnPixmap;
bool bluezactive;
bool bluezDiscoveryActive;
bool doListDevice; //If I have to list devices after bringing BT up?
bool isScanning; //If I'm scanning devices
bool m_wasOn; //If BT was started by menu?
private slots:
void slotMessage( const QCString& , const QByteArray& );
- void slotProcessExited(Opie::Core::OProcess* proc);
-
};
};
#endif