-rw-r--r-- | noncore/net/opietooth/applet/bluezapplet.cpp | 51 | ||||
-rw-r--r-- | noncore/net/opietooth/applet/bluezapplet.h | 5 |
2 files changed, 56 insertions, 0 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp index 8925803..48698b6 100644 --- a/noncore/net/opietooth/applet/bluezapplet.cpp +++ b/noncore/net/opietooth/applet/bluezapplet.cpp | |||
@@ -62,17 +62,25 @@ namespace OpieTooth { | |||
62 | bluezOffPixmap = Resource::loadImage( "bluetoothapplet/bluezoff" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); | 62 | bluezOffPixmap = Resource::loadImage( "bluetoothapplet/bluezoff" ).smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); |
63 | //bluezDiscoveryOnPixmap = Resource::loadImage( "bluetoothapplet/magglass" )smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize()); | 63 | //bluezDiscoveryOnPixmap = Resource::loadImage( "bluetoothapplet/magglass" )smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize()); |
64 | startTimer(4000); | 64 | startTimer(4000); |
65 | btDevice = 0; | 65 | btDevice = 0; |
66 | btManager = 0; | ||
66 | bluezactive = false; | 67 | bluezactive = false; |
67 | bluezDiscoveryActive = false; | 68 | bluezDiscoveryActive = false; |
68 | 69 | ||
70 | // TODO: determine whether this channel has to be closed at destruction time. | ||
71 | QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); | ||
72 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), | ||
73 | this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); | ||
69 | } | 74 | } |
70 | 75 | ||
71 | BluezApplet::~BluezApplet() { | 76 | BluezApplet::~BluezApplet() { |
72 | if ( btDevice ) { | 77 | if ( btDevice ) { |
73 | delete btDevice; | 78 | delete btDevice; |
74 | } | 79 | } |
80 | if ( btManager ) { | ||
81 | delete btManager; | ||
82 | } | ||
75 | } | 83 | } |
76 | 84 | ||
77 | int BluezApplet::position() | 85 | int BluezApplet::position() |
78 | { | 86 | { |
@@ -117,11 +125,54 @@ int BluezApplet::position() | |||
117 | return 0; | 125 | return 0; |
118 | } | 126 | } |
119 | 127 | ||
120 | int BluezApplet::checkBluezDiscoveryStatus() { | 128 | int BluezApplet::checkBluezDiscoveryStatus() { |
129 | return bluezDiscoveryActive; | ||
121 | } | 130 | } |
122 | 131 | ||
123 | int BluezApplet::setBluezDiscoveryStatus(int d) { | 132 | int BluezApplet::setBluezDiscoveryStatus(int d) { |
133 | return bluezDiscoveryActive=d; | ||
134 | } | ||
135 | |||
136 | // FIXME mbhaynie | ||
137 | // receiver for QCopChannel("QPE/Bluetooth") messages. | ||
138 | void BluezApplet::slotMessage( const QCString& str, const QByteArray& ) | ||
139 | { | ||
140 | if ( str == "enableBluetooth()") { | ||
141 | if (!checkBluezStatus()) { | ||
142 | setBluezStatus(1); | ||
143 | } | ||
144 | } else if ( str == "disableBluetooth()") { | ||
145 | if (checkBluezStatus()) { | ||
146 | // setBluezStatus(0); | ||
147 | } | ||
148 | } else if ( str == "listDevices()") { | ||
149 | if (!btManager) | ||
150 | { | ||
151 | btManager = new Manager("hci0"); | ||
152 | connect( btManager, SIGNAL( foundDevices(const QString&,RemoteDevice::ValueList) ), | ||
153 | this, SLOT( fillList(const QString&,RemoteDevice::ValueList) ) ) ; | ||
154 | } | ||
155 | |||
156 | btManager->searchDevices(); | ||
157 | } | ||
158 | } | ||
159 | |||
160 | // Once the hcitool scan is complete, report back. | ||
161 | void BluezApplet::fillList(const QString&, RemoteDevice::ValueList deviceList) | ||
162 | { | ||
163 | QCopEnvelope e("QPE/BluetoothBack", "devices(QStringMap)"); | ||
164 | |||
165 | QStringList list; | ||
166 | QMap<QString, QString> btmap; | ||
167 | |||
168 | RemoteDevice::ValueList::Iterator it; | ||
169 | for( it = deviceList.begin(); it != deviceList.end(); ++it ) | ||
170 | { | ||
171 | btmap[(*it).name()] = (*it).mac(); | ||
172 | } | ||
173 | |||
174 | e << btmap; | ||
124 | } | 175 | } |
125 | 176 | ||
126 | void BluezApplet::mousePressEvent( QMouseEvent *) { | 177 | void BluezApplet::mousePressEvent( QMouseEvent *) { |
127 | 178 | ||
diff --git a/noncore/net/opietooth/applet/bluezapplet.h b/noncore/net/opietooth/applet/bluezapplet.h index a394e38..3b99c0f 100644 --- a/noncore/net/opietooth/applet/bluezapplet.h +++ b/noncore/net/opietooth/applet/bluezapplet.h | |||
@@ -31,8 +31,9 @@ | |||
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 | 36 | ||
36 | namespace OpieTooth { | 37 | namespace OpieTooth { |
37 | class Device; | 38 | class Device; |
38 | 39 | ||
@@ -45,8 +46,10 @@ namespace OpieTooth { | |||
45 | protected: | 46 | protected: |
46 | void timerEvent(QTimerEvent *te ); | 47 | void timerEvent(QTimerEvent *te ); |
47 | 48 | ||
48 | public slots: | 49 | public slots: |
50 | void fillList( const QString& device, RemoteDevice::ValueList list ); | ||
51 | |||
49 | private: | 52 | private: |
50 | void mousePressEvent( QMouseEvent * ); | 53 | void mousePressEvent( QMouseEvent * ); |
51 | void paintEvent( QPaintEvent* ); | 54 | void paintEvent( QPaintEvent* ); |
52 | void launchManager(); | 55 | void launchManager(); |
@@ -56,15 +59,17 @@ public slots: | |||
56 | int setBluezDiscoveryStatus(int); | 59 | int setBluezDiscoveryStatus(int); |
57 | 60 | ||
58 | private: | 61 | private: |
59 | Device* btDevice; | 62 | Device* btDevice; |
63 | Manager *btManager; | ||
60 | QPixmap bluezOnPixmap; | 64 | QPixmap bluezOnPixmap; |
61 | QPixmap bluezOffPixmap; | 65 | QPixmap bluezOffPixmap; |
62 | QPixmap bluezDiscoveryOnPixmap; | 66 | QPixmap bluezDiscoveryOnPixmap; |
63 | bool bluezactive; | 67 | bool bluezactive; |
64 | bool bluezDiscoveryActive; | 68 | bool bluezDiscoveryActive; |
65 | 69 | ||
66 | private slots: | 70 | private slots: |
71 | void slotMessage( const QCString& , const QByteArray& ); | ||
67 | 72 | ||
68 | 73 | ||
69 | }; | 74 | }; |
70 | }; | 75 | }; |