summaryrefslogtreecommitdiff
authorharlekin <harlekin>2002-06-01 23:07:22 (UTC)
committer harlekin <harlekin>2002-06-01 23:07:22 (UTC)
commit4a8e6f982a1033b7f2b0406a238503f9acb9a7c5 (patch) (side-by-side diff)
treec85b839b6650ccfd8d63fe3a6ec75425e3a76bd9
parent4f5fdda25657f079b5937cbd4b588466c2298304 (diff)
downloadopie-4a8e6f982a1033b7f2b0406a238503f9acb9a7c5.zip
opie-4a8e6f982a1033b7f2b0406a238503f9acb9a7c5.tar.gz
opie-4a8e6f982a1033b7f2b0406a238503f9acb9a7c5.tar.bz2
bluetooth applet for the taskbar
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/applet/applet.pro12
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.cpp199
-rw-r--r--noncore/net/opietooth/applet/bluezapplet.h75
-rw-r--r--noncore/net/opietooth/applet/bluezappletimpl.cpp72
-rw-r--r--noncore/net/opietooth/applet/bluezappletimpl.h55
-rw-r--r--noncore/net/opietooth/applet/opie-bluetoothapplet.control9
6 files changed, 422 insertions, 0 deletions
diff --git a/noncore/net/opietooth/applet/applet.pro b/noncore/net/opietooth/applet/applet.pro
new file mode 100644
index 0000000..9520a5e
--- a/dev/null
+++ b/noncore/net/opietooth/applet/applet.pro
@@ -0,0 +1,12 @@
+TEMPLATE = lib
+CONFIG += qt warn_on release
+HEADERS = bluezapplet.h bluezappletimpl.h
+SOURCES = bluezapplet.cpp bluezappletimpl.cpp
+TARGET = bluetoothapplet
+DESTDIR = $(OPIEDIR)/plugins/applets
+INCLUDEPATH += $(OPIEDIR)/include
+INCLUDEPATH += $(OPIEDIR)/noncore/opietooth/lib
+DEPENDPATH += $(OPIEDIR)/include
+LIBS += -lqpe -lopietooth
+VERSION = 0.0.3
+
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp
new file mode 100644
index 0000000..9569b36
--- a/dev/null
+++ b/noncore/net/opietooth/applet/bluezapplet.cpp
@@ -0,0 +1,199 @@
+/*
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de>
+           .>+-=
+ _;:,     .>    :=|. This library is free software; you can
+.> <,   >  .   <= redistribute it and/or modify it under
+:=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%+i>       _;_.
+    .i_,=:_.      -<s. This library is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-= this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+
+#include "bluezapplet.h"
+#include <qapplication.h>
+
+#include <qpe/resource.h>
+#include <qpe/qcopenvelope_qws.h>
+#include <qpe/resource.h>
+#include <qpe/config.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 <device.h>
+
+namespace OpieTooth {
+
+ BluezApplet::BluezApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) {
+ setFixedHeight( 18 );
+ setFixedWidth( 14 );
+ bluezOnPixmap = Resource::loadPixmap( "bluetoothapplet/bluezon" );
+ bluezOffPixmap = Resource::loadPixmap( "bluetoothapplet/bluezoff" );
+ // bluezDiscoveryOnPixmap = Resource::loadPixmap( "bluetoothapplet/magglass" );
+ startTimer(5000);
+ timerEvent(NULL);
+ }
+
+ BluezApplet::~BluezApplet() {
+ }
+
+ int BluezApplet::checkBluezStatus() {
+ if (btDevice->isLoaded() ) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ int BluezApplet::setBluezStatus(int c) {
+
+ if (c == 1) {
+ btDevice = new Device("/dev/ttySB0", "scr" );
+ // system("hciattach /dev/ttySB0 csr");
+ //system("hcid");
+ } else {
+ if (btDevice) {
+ delete btDevice;
+ }
+ //system("killall hciattach");
+ //system("killall hcid");
+ }
+ return 0;
+ }
+
+ int BluezApplet::checkBluezDiscoveryStatus() {
+ }
+
+ int BluezApplet::setBluezDiscoveryStatus(int d) {
+ }
+
+ void BluezApplet::mousePressEvent( QMouseEvent *) {
+
+ QPopupMenu *menu = new QPopupMenu();
+ QPopupMenu *signal = new QPopupMenu();
+ int ret=0;
+
+ /* Refresh active state */
+ timerEvent(NULL);
+
+
+ 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 );
+ }
+ //menu->insertItem( tr("More..."), 7 )
+
+ QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) );
+ ret = menu->exec(p, 2);
+
+ // qDebug("ret was %d\n", ret);
+
+ switch(ret) {
+ case 0:
+ setBluezStatus(0);
+ timerEvent(NULL);
+ break;
+ case 1:
+ setBluezStatus(1);
+ timerEvent(NULL);
+ break;
+ case 2:
+ // start bluetoothmanager
+ launchManager();
+ timerEvent(NULL);
+ break;
+ case 3:
+ setBluezDiscoveryStatus(0);
+ timerEvent(NULL);
+ break;
+ case 4:
+ setBluezDiscoveryStatus(1);
+ timerEvent(NULL);
+ break;
+ //case 7:
+ // With table of currently-detected devices.
+ }
+ }
+
+/**
+ * Launches the bluetooth manager
+ */
+ void BluezApplet::launchManager() {
+ QCopEnvelope e("QPE/System", "execute(QString)");
+ e << QString("bluetooth-manager");
+ }
+
+/**
+ * Refresh timer
+ * @param the timer event
+ */
+ void BluezApplet::timerEvent( QTimerEvent * ) {
+ int oldactive = bluezactive;
+ int olddiscovery = bluezDiscoveryActive;
+
+ bluezactive = checkBluezStatus();
+ bluezDiscoveryActive = checkBluezDiscoveryStatus();
+
+ if ((bluezactive != oldactive) || (bluezDiscoveryActive != olddiscovery)) {
+ paintEvent(NULL);
+ }
+ }
+
+/**
+ * Implementation of the paint event
+ * @param the QPaintEvent
+ */
+ void BluezApplet::paintEvent( QPaintEvent* ) {
+ QPainter p(this);
+ qDebug("paint bluetooth pixmap");
+
+ p.eraseRect ( 0, 0, this->width(), this->height() );
+
+ if (bluezactive > 0) {
+ p.drawPixmap( 0, 1, bluezOnPixmap );
+ } else {
+ p.drawPixmap( 0, 1, bluezOffPixmap );
+ }
+
+ if (bluezDiscoveryActive > 0) {
+ p.drawPixmap( 0, 1, bluezDiscoveryOnPixmap );
+ }
+ }
+};
diff --git a/noncore/net/opietooth/applet/bluezapplet.h b/noncore/net/opietooth/applet/bluezapplet.h
new file mode 100644
index 0000000..da05a18
--- a/dev/null
+++ b/noncore/net/opietooth/applet/bluezapplet.h
@@ -0,0 +1,75 @@
+/*
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de>
+           .>+-=
+ _;:,     .>    :=|. This library is free software; you can
+.> <,   >  .   <= redistribute it and/or modify it under
+:=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%+i>       _;_.
+    .i_,=:_.      -<s. This library is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-= this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#ifndef __BLUEZAPPLET_H__
+#define __BLUEZAPPLET_H__
+
+#include <qwidget.h>
+#include <qpixmap.h>
+#include <qtimer.h>
+
+namespace OpieTooth {
+ class Device;
+
+ class BluezApplet : public QWidget {
+ Q_OBJECT
+ public:
+ BluezApplet( QWidget *parent = 0, const char *name=0 );
+ ~BluezApplet();
+
+ protected:
+ void timerEvent(QTimerEvent *te );
+
+public slots:
+ private:
+ void mousePressEvent( QMouseEvent * );
+ void paintEvent( QPaintEvent* );
+ void launchManager();
+ int checkBluezStatus();
+ int setBluezStatus(int);
+ int checkBluezDiscoveryStatus();
+ int setBluezDiscoveryStatus(int);
+ int sockfd;
+
+ private:
+ Device* btDevice;
+ QPixmap bluezOnPixmap;
+ QPixmap bluezOffPixmap;
+ QPixmap bluezDiscoveryOnPixmap;
+ int bluezactive;
+ int bluezDiscoveryActive;
+
+private slots:
+
+
+ };
+};
+
+
+#endif
+
diff --git a/noncore/net/opietooth/applet/bluezappletimpl.cpp b/noncore/net/opietooth/applet/bluezappletimpl.cpp
new file mode 100644
index 0000000..6677454
--- a/dev/null
+++ b/noncore/net/opietooth/applet/bluezappletimpl.cpp
@@ -0,0 +1,72 @@
+/*
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de>
+           .>+-=
+ _;:,     .>    :=|. This library is free software; you can
+.> <,   >  .   <= redistribute it and/or modify it under
+:=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%+i>       _;_.
+    .i_,=:_.      -<s. This library is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-= this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#include "bluezapplet.h"
+#include "bluezappletimpl.h"
+
+namespace OpieTooth {
+
+ BluezAppletImpl::BluezAppletImpl() : bluetooth(0), ref(0) {
+ }
+
+ BluezAppletImpl::~BluezAppletImpl() {
+ delete bluetooth;
+ }
+
+ QWidget *BluezAppletImpl::applet( QWidget *parent ) {
+ if ( !bluetooth ) {
+ bluetooth = new BluezApplet( parent );
+ }
+ return bluetooth;
+ }
+
+ int BluezAppletImpl::position() const {
+ return 6;
+ }
+
+ QRESULT BluezAppletImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
+ *iface = 0;
+ if ( uuid == IID_QUnknown ) {
+ *iface = this;
+ } else if ( uuid == IID_TaskbarApplet ) {
+ *iface = this;
+ }
+
+ if ( *iface ) {
+ (*iface)->addRef();
+ }
+ return QS_OK;
+ }
+
+ Q_EXPORT_INTERFACE() {
+ Q_CREATE_INSTANCE( BluezAppletImpl )
+ }
+
+};
+
+
diff --git a/noncore/net/opietooth/applet/bluezappletimpl.h b/noncore/net/opietooth/applet/bluezappletimpl.h
new file mode 100644
index 0000000..3a4faa6
--- a/dev/null
+++ b/noncore/net/opietooth/applet/bluezappletimpl.h
@@ -0,0 +1,55 @@
+/*
+               =. This file is part of the OPIE Project
+             .=l. Copyright (c) 2002 Maximilian Reiss <max.reiss@gmx.de>
+           .>+-=
+ _;:,     .>    :=|. This library is free software; you can
+.> <,   >  .   <= redistribute it and/or modify it under
+:=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%+i>       _;_.
+    .i_,=:_.      -<s. This library is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=| MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-= this library; see the file COPYING.LIB.
+ If not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+*/
+
+#ifndef BLUEZAPPLETIMPL_H
+#define BLUEZAPPLETIMPL_H
+
+#include <qpe/taskbarappletinterface.h>
+
+namespace OpieTooth {
+
+ class BluezApplet;
+
+ class BluezAppletImpl : public TaskbarAppletInterface {
+ public:
+ BluezAppletImpl();
+ virtual ~BluezAppletImpl();
+
+ QRESULT queryInterface( const QUuid&, QUnknownInterface** );
+ Q_REFCOUNT
+
+ virtual QWidget *applet( QWidget *parent );
+ virtual int position() const;
+
+ private:
+ BluezApplet *bluetooth;
+ ulong ref;
+ };
+};
+
+#endif
diff --git a/noncore/net/opietooth/applet/opie-bluetoothapplet.control b/noncore/net/opietooth/applet/opie-bluetoothapplet.control
new file mode 100644
index 0000000..13c2c69
--- a/dev/null
+++ b/noncore/net/opietooth/applet/opie-bluetoothapplet.control
@@ -0,0 +1,9 @@
+Files: plugins/applets/libbluetoothapplet.so* pics/bluetoothapplet/*
+Priority: optional
+Section: opie/system
+Maintainer: Maximilian Reiss <max.reiss@gmx.de>
+Architecture: arm
+Version: $QPE_VERSION-$SUB_VERSION.1
+Depends: opie-base ($QPE_VERSION)
+Description: Bluetooth Applet
+ An bluetooth taskbar applet for the Opie environment