summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc33
-rw-r--r--noncore/net/opietooth/lib/manager.h7
-rw-r--r--noncore/net/opietooth/manager/bluebase.cpp40
-rw-r--r--noncore/net/opietooth/manager/bluebase.h5
-rw-r--r--noncore/net/opietooth/manager/bluetoothbase.ui14
-rw-r--r--noncore/net/opietooth/manager/btconnectionitem.cpp18
-rw-r--r--noncore/net/opietooth/manager/btconnectionitem.h8
7 files changed, 119 insertions, 6 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index 8ddcfe8..c89d325 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -199,105 +199,136 @@ void Manager::slotHCIOut(OProcess* proc, char* ch, int len) {
199 qWarning("slotHCIOut "); 199 qWarning("slotHCIOut ");
200 string = it.data(); 200 string = it.data();
201 } 201 }
202 string.append( str ); 202 string.append( str );
203 203
204 m_devices.replace( proc->name(), string ); 204 m_devices.replace( proc->name(), string );
205} 205}
206RemoteDevice::ValueList Manager::parseHCIOutput(const QString& output ) { 206RemoteDevice::ValueList Manager::parseHCIOutput(const QString& output ) {
207 qWarning("parseHCI %s", output.latin1() ); 207 qWarning("parseHCI %s", output.latin1() );
208 RemoteDevice::ValueList list; 208 RemoteDevice::ValueList list;
209 QStringList strList = QStringList::split('\n', output ); 209 QStringList strList = QStringList::split('\n', output );
210 QStringList::Iterator it; 210 QStringList::Iterator it;
211 QString str; 211 QString str;
212 for ( it = strList.begin(); it != strList.end(); ++it ) { 212 for ( it = strList.begin(); it != strList.end(); ++it ) {
213 str = (*it).stripWhiteSpace(); 213 str = (*it).stripWhiteSpace();
214 qWarning("OpieTooth %s", str.latin1() ); 214 qWarning("OpieTooth %s", str.latin1() );
215 int pos = str.findRev(':' ); 215 int pos = str.findRev(':' );
216 if ( pos > 0 ) { 216 if ( pos > 0 ) {
217 QString mac = str.left(17 ); 217 QString mac = str.left(17 );
218 str.remove( 0, 17 ); 218 str.remove( 0, 17 );
219 qWarning("mac %s", mac.latin1() ); 219 qWarning("mac %s", mac.latin1() );
220 qWarning("rest:%s", str.latin1() ); 220 qWarning("rest:%s", str.latin1() );
221 RemoteDevice rem( mac , str.stripWhiteSpace() ); 221 RemoteDevice rem( mac , str.stripWhiteSpace() );
222 list.append( rem ); 222 list.append( rem );
223 } 223 }
224 } 224 }
225 return list; 225 return list;
226} 226}
227 227
228////// hcitool cc and hcitool con 228////// hcitool cc and hcitool con
229 229
230/** 230/**
231 * Create it on the stack as don't care 231 * Create it on the stack as don't care
232 * so we don't need to care for it 232 * so we don't need to care for it
233 * cause hcitool gets reparented 233 * cause hcitool gets reparented
234 */ 234 */
235void Manager::connectTo( const QString& mac) { 235void Manager::connectTo( const QString& mac) {
236 OProcess proc; 236 OProcess proc;
237 proc << "hcitool"; 237 proc << "hcitool";
238 proc << "cc"; 238 proc << "cc";
239 proc << mac; 239 proc << mac;
240 proc.start(OProcess::DontCare); // the lib does not care at this point 240 proc.start(OProcess::DontCare); // the lib does not care at this point
241} 241}
242 242
243 243
244void Manager::searchConnections() { 244void Manager::searchConnections() {
245 qWarning("searching connections?"); 245 qWarning("searching connections?");
246 OProcess* proc = new OProcess(); 246 OProcess* proc = new OProcess();
247 m_hcitoolCon = QString::null; 247 m_hcitoolCon = QString::null;
248 248
249 connect(proc, SIGNAL(processExited(OProcess*) ), 249 connect(proc, SIGNAL(processExited(OProcess*) ),
250 this, SLOT(slotConnectionExited( OProcess*) ) ); 250 this, SLOT(slotConnectionExited( OProcess*) ) );
251 connect(proc, SIGNAL(receivedStdout(OProcess*, char*, int) ), 251 connect(proc, SIGNAL(receivedStdout(OProcess*, char*, int) ),
252 this, SLOT(slotConnectionOutput(OProcess*, char*, int) ) ); 252 this, SLOT(slotConnectionOutput(OProcess*, char*, int) ) );
253 *proc << "hcitool"; 253 *proc << "hcitool";
254 *proc << "con"; 254 *proc << "con";
255 255
256 if (!proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { 256 if (!proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
257 ConnectionState::ValueList list; 257 ConnectionState::ValueList list;
258 emit connections( list ); 258 emit connections( list );
259 delete proc; 259 delete proc;
260 } 260 }
261} 261}
262void Manager::slotConnectionExited( OProcess* proc ) { 262void Manager::slotConnectionExited( OProcess* proc ) {
263 qWarning("<<<<<<<<<<<<<<<<<exited");
264 ConnectionState::ValueList list; 263 ConnectionState::ValueList list;
265 list = parseConnections( m_hcitoolCon ); 264 list = parseConnections( m_hcitoolCon );
266 emit connections(list ); 265 emit connections(list );
267 delete proc; 266 delete proc;
268} 267}
269void Manager::slotConnectionOutput(OProcess* /*proc*/, char* cha, int len) { 268void Manager::slotConnectionOutput(OProcess* /*proc*/, char* cha, int len) {
270 QCString str(cha, len ); 269 QCString str(cha, len );
271 m_hcitoolCon.append( str ); 270 m_hcitoolCon.append( str );
272 //delete proc; 271 //delete proc;
273} 272}
274ConnectionState::ValueList Manager::parseConnections( const QString& out ) { 273ConnectionState::ValueList Manager::parseConnections( const QString& out ) {
275 ConnectionState::ValueList list2; 274 ConnectionState::ValueList list2;
276 QStringList list = QStringList::split('\n', out ); 275 QStringList list = QStringList::split('\n', out );
277 QStringList::Iterator it; 276 QStringList::Iterator it;
278 // remove the first line ( "Connections:") 277 // remove the first line ( "Connections:")
279 it = list.begin(); 278 it = list.begin();
280 it = list.remove( it ); 279 it = list.remove( it );
281 for (; it != list.end(); ++it ) { 280 for (; it != list.end(); ++it ) {
282 QString row = (*it).stripWhiteSpace(); 281 QString row = (*it).stripWhiteSpace();
283 QStringList value = QStringList::split(' ', row ); 282 QStringList value = QStringList::split(' ', row );
284 qWarning("0: %s", value[0].latin1() ); 283 qWarning("0: %s", value[0].latin1() );
285 qWarning("1: %s", value[1].latin1() ); 284 qWarning("1: %s", value[1].latin1() );
286 qWarning("2: %s", value[2].latin1() ); 285 qWarning("2: %s", value[2].latin1() );
287 qWarning("3: %s", value[3].latin1() ); 286 qWarning("3: %s", value[3].latin1() );
288 qWarning("4: %s", value[4].latin1() ); 287 qWarning("4: %s", value[4].latin1() );
289 qWarning("5: %s", value[5].latin1() ); 288 qWarning("5: %s", value[5].latin1() );
290 qWarning("6: %s", value[6].latin1() ); 289 qWarning("6: %s", value[6].latin1() );
291 qWarning("7: %s", value[7].latin1() ); 290 qWarning("7: %s", value[7].latin1() );
292 qWarning("8: %s", value[8].latin1() ); 291 qWarning("8: %s", value[8].latin1() );
293 ConnectionState con; 292 ConnectionState con;
294 con.setDirection( value[0] == QString::fromLatin1("<") ? Outgoing : Incoming ); 293 con.setDirection( value[0] == QString::fromLatin1("<") ? Outgoing : Incoming );
295 con.setConnectionMode( value[1] ); 294 con.setConnectionMode( value[1] );
296 con.setMac( value[2] ); 295 con.setMac( value[2] );
297 con.setHandle( value[4].toInt() ); 296 con.setHandle( value[4].toInt() );
298 con.setState( value[6].toInt() ); 297 con.setState( value[6].toInt() );
299 con.setLinkMode( value[8] == QString::fromLatin1("MASTER") ? Master : Client ); 298 con.setLinkMode( value[8] == QString::fromLatin1("MASTER") ? Master : Client );
300 list2.append( con ); 299 list2.append( con );
301 } 300 }
302 return list2; 301 return list2;
303} 302}
303
304void Manager::signalStrength( const QString &mac ) {
305
306 OProcess* sig_proc = new OProcess();
307
308 connect(sig_proc, SIGNAL(processExited(OProcess*) ),
309 this, SLOT(slotSignalStrengthExited( OProcess*) ) );
310 connect(sig_proc, SIGNAL(receivedStdout(OProcess*, char*, int) ),
311 this, SLOT(slotSignalStrengthOutput(OProcess*, char*, int) ) );
312 *sig_proc << "hcitool";
313 *sig_proc << "lq";
314 *sig_proc << mac;
315
316 sig_proc->setName( mac.latin1() );
317
318 if (!sig_proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
319 emit signalStrength( mac, "-1" );
320 delete sig_proc;
321 }
322}
323
324void Manager::slotSignalStrengthOutput(OProcess* proc, char* cha, int len) {
325 QCString str(cha, len );
326 QString temp = QString(str).stripWhiteSpace();
327 QStringList value = QStringList::split(' ', temp );
328 emit signalStrength( proc->name(), value[2].latin1() );
329}
330
331
332void Manager::slotSignalStrengthExited( OProcess* proc ) {
333 delete proc;
334}
diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h
index 0ebe1b3..abc8ba1 100644
--- a/noncore/net/opietooth/lib/manager.h
+++ b/noncore/net/opietooth/lib/manager.h
@@ -63,104 +63,111 @@ namespace OpieTooth {
63 63
64 /** 64 /**
65 * same as above 65 * same as above
66 */ 66 */
67 void isAvailable(Device *dev ); 67 void isAvailable(Device *dev );
68 68
69 /** this searchs for devices reachable from the 69 /** this searchs for devices reachable from the
70 * currently managed device 70 * currently managed device
71 * or from device if @param device is not empty 71 * or from device if @param device is not empty
72 */ 72 */
73 void searchDevices(const QString& device= QString::null ); 73 void searchDevices(const QString& device= QString::null );
74 /** same as above 74 /** same as above
75 * 75 *
76 */ 76 */
77 void searchDevices(Device *d ); 77 void searchDevices(Device *d );
78 78
79 /** 79 /**
80 * This will add the service @param name 80 * This will add the service @param name
81 * to the sdpd daemon 81 * to the sdpd daemon
82 * It will start the daemon if necessary 82 * It will start the daemon if necessary
83 */ 83 */
84 void addService(const QString &name ); 84 void addService(const QString &name );
85 85
86 /** 86 /**
87 * This will add the services @param names 87 * This will add the services @param names
88 * to the sdpd daemon 88 * to the sdpd daemon
89 * It will start the daemon if necessary 89 * It will start the daemon if necessary
90 */ 90 */
91 void addServices( const QStringList& names ); 91 void addServices( const QStringList& names );
92 92
93 /** 93 /**
94 * This removes a service from the sdps 94 * This removes a service from the sdps
95 */ 95 */
96 void removeService(const QString &name ); 96 void removeService(const QString &name );
97 97
98 /** 98 /**
99 * Removes a list from the sdpd 99 * Removes a list from the sdpd
100 */ 100 */
101 void removeServices(const QStringList& ); 101 void removeServices(const QStringList& );
102 102
103 /** 103 /**
104 * search for services on a remote device 104 * search for services on a remote device
105 * 105 *
106 */ 106 */
107 void searchServices( const QString& remDevice ); 107 void searchServices( const QString& remDevice );
108 108
109 /** 109 /**
110 * search for services on a remote device 110 * search for services on a remote device
111 */ 111 */
112 void searchServices( const RemoteDevice& ); 112 void searchServices( const RemoteDevice& );
113 113
114 /** 114 /**
115 * Starts to connect to the device 115 * Starts to connect to the device
116 * in @param 116 * in @param
117 */ 117 */
118 void connectTo(const QString& ); 118 void connectTo(const QString& );
119 119
120 /** 120 /**
121 * Searches for active connections 121 * Searches for active connections
122 * the result is emitted with the 122 * the result is emitted with the
123 * connections signal 123 * connections signal
124 */ 124 */
125 void searchConnections(); 125 void searchConnections();
126 126
127 void signalStrength( const QString &mac );
127//// not implemented yet 128//// not implemented yet
128 /*static*/ QString toDevice( const QString& mac ); 129 /*static*/ QString toDevice( const QString& mac );
129 /*static*/ QString toMac( const QString &device ); 130 /*static*/ QString toMac( const QString &device );
130//// not implemented yet over 131//// not implemented yet over
131 132
132 signals: 133 signals:
133 // device either mac or dev name 134 // device either mac or dev name
134 // the first device is the device which you access 135 // the first device is the device which you access
135 void available( const QString& device, bool connected ); 136 void available( const QString& device, bool connected );
136 void addedService( const QString& service, bool added ); 137 void addedService( const QString& service, bool added );
137 void removedService( const QString& service, bool removed ); 138 void removedService( const QString& service, bool removed );
138 void foundServices( const QString& device, Services::ValueList ); 139 void foundServices( const QString& device, Services::ValueList );
139 void foundDevices( const QString& device, RemoteDevice::ValueList ); 140 void foundDevices( const QString& device, RemoteDevice::ValueList );
140 void connections( ConnectionState::ValueList ); 141 void connections( ConnectionState::ValueList );
142 void signalStrength( const QString& mac, const QString& strengh );
141 143
142private slots: 144private slots:
143 void slotProcessExited(OProcess* ); 145 void slotProcessExited(OProcess* );
144 146
145 void slotSDPExited(OProcess*); 147 void slotSDPExited(OProcess*);
146 void slotSDPOut(OProcess*, char*, int); 148 void slotSDPOut(OProcess*, char*, int);
147 149
148 void slotHCIExited(OProcess* ); 150 void slotHCIExited(OProcess* );
149 void slotHCIOut(OProcess*, char*, int ); 151 void slotHCIOut(OProcess*, char*, int );
150 152
151 void slotConnectionExited(OProcess* ); 153 void slotConnectionExited(OProcess* );
152 void slotConnectionOutput(OProcess*, char*, int ); 154 void slotConnectionOutput(OProcess*, char*, int );
155
156 void slotSignalStrengthOutput( OProcess*, char*, int );
157 void slotSignalStrengthExited( OProcess* );
153 private: 158 private:
154 Services::ValueList parseSDPOutput( const QString& ); 159 Services::ValueList parseSDPOutput( const QString& );
155 RemoteDevice::ValueList parseHCIOutput( const QString& ); 160 RemoteDevice::ValueList parseHCIOutput( const QString& );
156 ConnectionState::ValueList parseConnections( const QString& ); 161 ConnectionState::ValueList parseConnections( const QString& );
157 OProcess *m_hcitool; 162 OProcess *m_hcitool;
158 OProcess *m_sdp; // not only one 163 OProcess *m_sdp; // not only one
159 QString m_device; 164 QString m_device;
165 QMap<QString, int> m_signalStrength;
160 QMap<QString, QString> m_out; 166 QMap<QString, QString> m_out;
161 QMap<QString, QString> m_devices; 167 QMap<QString, QString> m_devices;
168 QMap<OProcess*, QString> m_signalMac;
162 QString m_hcitoolCon; 169 QString m_hcitoolCon;
163 }; 170 };
164}; 171};
165 172
166#endif 173#endif
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp
index 8b15c4f..9663b52 100644
--- a/noncore/net/opietooth/manager/bluebase.cpp
+++ b/noncore/net/opietooth/manager/bluebase.cpp
@@ -11,157 +11,161 @@
11 * This program is free software; you can redistribute it and/or modify * 11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by * 12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include "bluebase.h" 18#include "bluebase.h"
19#include "scandialog.h" 19#include "scandialog.h"
20#include "hciconfwrapper.h" 20#include "hciconfwrapper.h"
21#include "devicehandler.h" 21#include "devicehandler.h"
22#include "btconnectionitem.h" 22#include "btconnectionitem.h"
23 23
24#include <remotedevice.h> 24#include <remotedevice.h>
25#include <services.h> 25#include <services.h>
26 26
27#include <stdlib.h> 27#include <stdlib.h>
28 28
29#include <qframe.h> 29#include <qframe.h>
30#include <qlabel.h> 30#include <qlabel.h>
31#include <qpushbutton.h> 31#include <qpushbutton.h>
32#include <qlayout.h> 32#include <qlayout.h>
33#include <qvariant.h> 33#include <qvariant.h>
34#include <qimage.h> 34#include <qimage.h>
35#include <qpixmap.h> 35#include <qpixmap.h>
36#include <qtabwidget.h> 36#include <qtabwidget.h>
37#include <qscrollview.h> 37#include <qscrollview.h>
38#include <qvbox.h> 38#include <qvbox.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qlineedit.h> 41#include <qlineedit.h>
42#include <qlistview.h> 42#include <qlistview.h>
43#include <qdir.h> 43#include <qdir.h>
44#include <qpopupmenu.h> 44#include <qpopupmenu.h>
45#include <qtimer.h> 45#include <qtimer.h>
46#include <qlist.h> 46#include <qlist.h>
47 47
48#include <qpe/qpeapplication.h> 48#include <qpe/qpeapplication.h>
49#include <qpe/resource.h> 49#include <qpe/resource.h>
50#include <qpe/config.h> 50#include <qpe/config.h>
51 51
52 52
53using namespace OpieTooth; 53using namespace OpieTooth;
54 54
55BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) 55BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
56 : BluetoothBase( parent, name, fl ) { 56 : BluetoothBase( parent, name, fl ) {
57 57
58 m_localDevice = new Manager( "hci0" ); 58 m_localDevice = new Manager( "hci0" );
59 59
60 connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) ); 60 connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) );
61 connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) ); 61 connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) );
62 // not good since lib is async 62 // not good since lib is async
63 // connect( ListView2, SIGNAL( expanded ( QListViewItem* ) ), 63 // connect( ListView2, SIGNAL( expanded ( QListViewItem* ) ),
64 // this, SLOT( addServicesToDevice( QListViewItem * ) ) ); 64 // this, SLOT( addServicesToDevice( QListViewItem * ) ) );
65 connect( ListView2, SIGNAL( clicked( QListViewItem* )), 65 connect( ListView2, SIGNAL( clicked( QListViewItem* )),
66 this, SLOT( startServiceActionClicked( QListViewItem* ) ) ); 66 this, SLOT( startServiceActionClicked( QListViewItem* ) ) );
67 connect( ListView2, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int ) ), 67 connect( ListView2, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int ) ),
68 this, SLOT(startServiceActionHold( QListViewItem *, const QPoint &, int) ) ); 68 this, SLOT(startServiceActionHold( QListViewItem *, const QPoint &, int) ) );
69 connect( m_localDevice , SIGNAL( foundServices( const QString& , Services::ValueList ) ), 69 connect( m_localDevice , SIGNAL( foundServices( const QString& , Services::ValueList ) ),
70 this, SLOT( addServicesToDevice( const QString& , Services::ValueList ) ) ); 70 this, SLOT( addServicesToDevice( const QString& , Services::ValueList ) ) );
71 connect( m_localDevice, SIGNAL( available( const QString&, bool ) ), 71 connect( m_localDevice, SIGNAL( available( const QString&, bool ) ),
72 this, SLOT( deviceActive( const QString& , bool ) ) ); 72 this, SLOT( deviceActive( const QString& , bool ) ) );
73 connect( m_localDevice, SIGNAL( connections( ConnectionState::ValueList ) ), 73 connect( m_localDevice, SIGNAL( connections( ConnectionState::ValueList ) ),
74 this, SLOT( addConnectedDevices( ConnectionState::ValueList ) ) ); 74 this, SLOT( addConnectedDevices( ConnectionState::ValueList ) ) );
75 connect( m_localDevice, SIGNAL( signalStrength( const QString&, const QString& ) ),
76 this, SLOT( addSignalStrength( const QString&, const QString& ) ) );
75 77
76 78
77 // let hold be rightButtonClicked() 79 // let hold be rightButtonClicked()
78 QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold); 80 QPEApplication::setStylusOperation( ListView2->viewport(), QPEApplication::RightOnHold);
79 QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold); 81 QPEApplication::setStylusOperation( ListView4->viewport(), QPEApplication::RightOnHold);
80 82
81 //Load all icons needed 83 //Load all icons needed
82 m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); 84 m_offPix = Resource::loadPixmap( "opietooth/notconnected" );
83 m_onPix = Resource::loadPixmap( "opietooth/connected" ); 85 m_onPix = Resource::loadPixmap( "opietooth/connected" );
84 m_findPix = Resource::loadPixmap( "opietooth/find" ); 86 m_findPix = Resource::loadPixmap( "opietooth/find" );
85 87
86 QPalette pal = this->palette(); 88 QPalette pal = this->palette();
87 QColor col = pal.color( QPalette::Active, QColorGroup::Background ); 89 QColor col = pal.color( QPalette::Active, QColorGroup::Background );
88 pal.setColor( QPalette::Active, QColorGroup::Button, col ); 90 pal.setColor( QPalette::Active, QColorGroup::Button, col );
89 pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); 91 pal.setColor( QPalette::Inactive, QColorGroup::Button, col );
90 pal.setColor( QPalette::Normal, QColorGroup::Button, col ); 92 pal.setColor( QPalette::Normal, QColorGroup::Button, col );
91 pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); 93 pal.setColor( QPalette::Disabled, QColorGroup::Button, col );
92 this->setPalette( pal ); 94 this->setPalette( pal );
93 95
94 setCaption( tr( "Bluetooth Manager" ) ); 96 setCaption( tr( "Bluetooth Manager" ) );
95 97
96 readConfig(); 98 readConfig();
97 initGui(); 99 initGui();
98 100
99 ListView2->setRootIsDecorated(true); 101 ListView2->setRootIsDecorated(true);
100 102
103
101 writeToHciConfig(); 104 writeToHciConfig();
102 // search conncetions 105 // search conncetions
103 addConnectedDevices(); 106 addConnectedDevices();
107 addSignalStrength();
104 m_iconLoader = new BTIconLoader(); 108 m_iconLoader = new BTIconLoader();
105 readSavedDevices(); 109 readSavedDevices();
106} 110}
107 111
108/** 112/**
109 * Reads all options from the config file 113 * Reads all options from the config file
110 */ 114 */
111void BlueBase::readConfig() { 115void BlueBase::readConfig() {
112 116
113 Config cfg( "bluetoothmanager" ); 117 Config cfg( "bluetoothmanager" );
114 cfg.setGroup( "bluezsettings" ); 118 cfg.setGroup( "bluezsettings" );
115 119
116 m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with 120 m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with
117 m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak 121 m_defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak
118 m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE ); 122 m_useEncryption = cfg.readBoolEntry( "useEncryption" , TRUE );
119 m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE ); 123 m_enableAuthentification = cfg.readBoolEntry( "enableAuthentification" , TRUE );
120 m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE ); 124 m_enablePagescan = cfg.readBoolEntry( "enablePagescan" , TRUE );
121 m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE ); 125 m_enableInquiryscan = cfg.readBoolEntry( "enableInquiryscan" , TRUE );
122} 126}
123 127
124/** 128/**
125 * Writes all options to the config file 129 * Writes all options to the config file
126 */ 130 */
127void BlueBase::writeConfig() { 131void BlueBase::writeConfig() {
128 132
129 Config cfg( "bluetoothmanager" ); 133 Config cfg( "bluetoothmanager" );
130 cfg.setGroup( "bluezsettings" ); 134 cfg.setGroup( "bluezsettings" );
131 135
132 cfg.writeEntry( "name" , m_deviceName ); 136 cfg.writeEntry( "name" , m_deviceName );
133 cfg.writeEntryCrypt( "passkey" , m_defaultPasskey ); 137 cfg.writeEntryCrypt( "passkey" , m_defaultPasskey );
134 cfg.writeEntry( "useEncryption" , m_useEncryption ); 138 cfg.writeEntry( "useEncryption" , m_useEncryption );
135 cfg.writeEntry( "enableAuthentification" , m_enableAuthentification ); 139 cfg.writeEntry( "enableAuthentification" , m_enableAuthentification );
136 cfg.writeEntry( "enablePagescan" , m_enablePagescan ); 140 cfg.writeEntry( "enablePagescan" , m_enablePagescan );
137 cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan ); 141 cfg.writeEntry( "enableInquiryscan" , m_enableInquiryscan );
138 142
139 writeToHciConfig(); 143 writeToHciConfig();
140} 144}
141 145
142/** 146/**
143 * Modify the hcid.conf file to our needs 147 * Modify the hcid.conf file to our needs
144 */ 148 */
145void BlueBase::writeToHciConfig() { 149void BlueBase::writeToHciConfig() {
146 qWarning("writeToHciConfig"); 150 qWarning("writeToHciConfig");
147 HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" ); 151 HciConfWrapper hciconf ( "/etc/bluetooth/hcid.conf" );
148 hciconf.load(); 152 hciconf.load();
149 hciconf.setPinHelper( "/bin/QtPalmtop/bin/blue-pin" ); 153 hciconf.setPinHelper( "/bin/QtPalmtop/bin/blue-pin" );
150 hciconf.setName( m_deviceName ); 154 hciconf.setName( m_deviceName );
151 hciconf.setEncrypt( m_useEncryption ); 155 hciconf.setEncrypt( m_useEncryption );
152 hciconf.setAuth( m_enableAuthentification ); 156 hciconf.setAuth( m_enableAuthentification );
153 hciconf.setPscan( m_enablePagescan ); 157 hciconf.setPscan( m_enablePagescan );
154 hciconf.setIscan( m_enableInquiryscan ); 158 hciconf.setIscan( m_enableInquiryscan );
155 hciconf.save(); 159 hciconf.save();
156} 160}
157 161
158 162
159/** 163/**
160 * Read the list of allready known devices 164 * Read the list of allready known devices
161 */ 165 */
162void BlueBase::readSavedDevices() { 166void BlueBase::readSavedDevices() {
163 167
164 QValueList<RemoteDevice> loadedDevices; 168 QValueList<RemoteDevice> loadedDevices;
165 DeviceHandler handler; 169 DeviceHandler handler;
166 loadedDevices = handler.load(); 170 loadedDevices = handler.load();
167 171
@@ -309,209 +313,237 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin
309 } 313 }
310 delete groups; 314 delete groups;
311 315
312 } 316 }
313 317
314 /* 318 /*
315 * We got service sensitive PopupMenus in our factory 319 * We got service sensitive PopupMenus in our factory
316 * We will create one through the factory and will insert 320 * We will create one through the factory and will insert
317 * our Separator + ShowInfo into the menu or create a new 321 * our Separator + ShowInfo into the menu or create a new
318 * one if the factory returns 0 322 * one if the factory returns 0
319 * PopupMenu deletion is kind of weird. 323 * PopupMenu deletion is kind of weird.
320 * If escaped( -1 ) or any of our items were chosen we'll 324 * If escaped( -1 ) or any of our items were chosen we'll
321 * delete the PopupMenu otherwise it's the responsibility of 325 * delete the PopupMenu otherwise it's the responsibility of
322 * the PopupMenu to delete itself 326 * the PopupMenu to delete itself
323 * 327 *
324 */ 328 */
325 else if ( ((BTListItem*)item)->type() == "service") { 329 else if ( ((BTListItem*)item)->type() == "service") {
326 BTServiceItem* service = (BTServiceItem*)item; 330 BTServiceItem* service = (BTServiceItem*)item;
327 QMap<int, QString> list = service->services().classIdList(); 331 QMap<int, QString> list = service->services().classIdList();
328 QMap<int, QString>::Iterator it = list.begin(); 332 QMap<int, QString>::Iterator it = list.begin();
329 QPopupMenu *popup =0l; 333 QPopupMenu *popup =0l;
330 if ( it != list.end() ) { 334 if ( it != list.end() ) {
331 qWarning("Searching id %d %s", it.key(), it.data().latin1() ); 335 qWarning("Searching id %d %s", it.key(), it.data().latin1() );
332 popup = m_popHelper.find( it.key() /*1*/, 336 popup = m_popHelper.find( it.key() /*1*/,
333 service->services(), 337 service->services(),
334 (BTDeviceItem*)service->parent() ); 338 (BTDeviceItem*)service->parent() );
335 }else { 339 }else {
336 qWarning("Empty"); 340 qWarning("Empty");
337 } 341 }
338 342
339 if ( popup == 0l ) { 343 if ( popup == 0l ) {
340 qWarning("factory returned 0l"); 344 qWarning("factory returned 0l");
341 popup = new QPopupMenu(); 345 popup = new QPopupMenu();
342 } 346 }
343 int test1 = popup->insertItem( tr("Test1:"), 2); 347 int test1 = popup->insertItem( tr("Test1:"), 2);
344 348
345 ret = popup->exec( point ); 349 ret = popup->exec( point );
346 qWarning("returned from exec() "); 350 qWarning("returned from exec() ");
347 if ( ret == -1 ) { 351 if ( ret == -1 ) {
348 ; 352 ;
349 } else if ( ret == test1 ) { 353 } else if ( ret == test1 ) {
350 ; 354 ;
351 } 355 }
352 delete popup; 356 delete popup;
353 } 357 }
354 delete menu; 358 delete menu;
355} 359}
356 360
357 361
358/** 362/**
359 * Search and display avail. services for a device (on expand from device listing) 363 * Search and display avail. services for a device (on expand from device listing)
360 * @param item the service item returned 364 * @param item the service item returned
361 */ 365 */
362void BlueBase::addServicesToDevice( BTDeviceItem * item ) { 366void BlueBase::addServicesToDevice( BTDeviceItem * item ) {
363 qDebug("addServicesToDevice"); 367 qDebug("addServicesToDevice");
364 // row of mac adress text(3) 368 // row of mac adress text(3)
365 RemoteDevice device = item->remoteDevice(); 369 RemoteDevice device = item->remoteDevice();
366 m_deviceList.insert( item->mac() , item ); 370 m_deviceList.insert( item->mac() , item );
367 // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back 371 // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back
368 m_localDevice->searchServices( device ); 372 m_localDevice->searchServices( device );
369} 373}
370 374
371 375
372/** 376/**
373 * Overloaded. This one it the one that is connected to the foundServices signal 377 * Overloaded. This one it the one that is
378 ted to the foundServices signal
374 * @param device the mac address of the remote device 379 * @param device the mac address of the remote device
375 * @param servicesList the list with the service the device has. 380 * @param servicesList the list with the service the device has.
376 */ 381 */
377void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) { 382void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) {
378 qDebug("fill services list"); 383 qDebug("fill services list");
379 384
380 QMap<QString,BTDeviceItem*>::Iterator it; 385 QMap<QString,BTDeviceItem*>::Iterator it;
381 BTDeviceItem* deviceItem = 0; 386 BTDeviceItem* deviceItem = 0;
382 387
383 // get the right devices which requested the search 388 // get the right devices which requested the search
384 it = m_deviceList.find( device ); 389 it = m_deviceList.find( device );
385 if( it == m_deviceList.end() ) 390 if( it == m_deviceList.end() )
386 return; 391 return;
387 deviceItem = it.data(); 392 deviceItem = it.data();
388 393
389 // remove previous entries 394 // remove previous entries
390 QList<QListViewItem> tempList; 395 QList<QListViewItem> tempList;
391 tempList.setAutoDelete( true ); 396 tempList.setAutoDelete( true );
392 QListViewItem * child = deviceItem->firstChild(); 397 QListViewItem * child = deviceItem->firstChild();
393 while( child ) { 398 while( child ) {
394 tempList.append( child ); 399 tempList.append( child );
395 child = child->nextSibling(); 400 child = child->nextSibling();
396 } 401 }
397 tempList.clear(); 402 tempList.clear();
398 403
399 QValueList<OpieTooth::Services>::Iterator it2; 404 QValueList<OpieTooth::Services>::Iterator it2;
400 BTServiceItem* serviceItem; 405 BTServiceItem* serviceItem;
401 406
402 407
403 if (!servicesList.isEmpty() ) { 408 if (!servicesList.isEmpty() ) {
404 // add services 409 // add services
405 QMap<int, QString> list; 410 QMap<int, QString> list;
406 QMap<int, QString>::Iterator classIt; 411 QMap<int, QString>::Iterator classIt;
407 for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) { 412 for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) {
408 serviceItem = new BTServiceItem( deviceItem, (*it2) ); 413 serviceItem = new BTServiceItem( deviceItem, (*it2) );
409 list = (*it2).classIdList(); 414 list = (*it2).classIdList();
410 classIt = list.begin(); 415 classIt = list.begin();
411 int classId=0; 416 int classId=0;
412 if ( classIt != list.end() ) { 417 if ( classIt != list.end() ) {
413 classId = classIt.key(); 418 classId = classIt.key();
414 } 419 }
415 420
416 serviceItem->setPixmap( 0, m_iconLoader->serviceIcon( classId ) ); 421 serviceItem->setPixmap( 0, m_iconLoader->serviceIcon( classId ) );
417 } 422 }
418 } else { 423 } else {
419 Services s1; 424 Services s1;
420 s1.setServiceName( tr("no services found") ); 425 s1.setServiceName( tr("no services found") );
421 serviceItem = new BTServiceItem( deviceItem, s1 ); 426 serviceItem = new BTServiceItem( deviceItem, s1 );
422 } 427 }
423 // now remove them from the list 428 // now remove them from the list
424 m_deviceList.remove( it ); 429 m_deviceList.remove( it );
425} 430}
426 431
427 432
433
434
435
436void BlueBase::addSignalStrength() {
437
438 QListViewItemIterator it( ListView4 );
439 for ( ; it.current(); ++it ) {
440 m_localDevice->signalStrength( ((BTConnectionItem*)it.current() )->connection().mac() );
441 }
442
443 QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) );
444}
445
446void BlueBase::addSignalStrength( const QString& mac, const QString& strength ) {
447
448 QListViewItemIterator it( ListView4 );
449 for ( ; it.current(); ++it ) {
450 if( ((BTConnectionItem*)it.current())->connection().mac() == mac ) {
451 ((BTConnectionItem*)it.current() )->setSignalStrength( strength );
452 }
453 }
454}
455
428/** 456/**
429 * Add the existing connections (pairs) to the connections tab. 457 * Add the existing connections (pairs) to the connections tab.
430 * This one triggers the search 458 * This one triggers the search
431 */ 459 */
432void BlueBase::addConnectedDevices() { 460void BlueBase::addConnectedDevices() {
433 m_localDevice->searchConnections(); 461 m_localDevice->searchConnections();
434} 462}
435 463
436
437/** 464/**
438 * This adds the found connections to the connection tab. 465 * This adds the found connections to the connection tab.
439 * @param connectionList the ValueList with all current connections 466 * @param connectionList the ValueList with all current connections
440 */ 467 */
441void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) { 468void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) {
442 469
443 // clear the ListView first 470 // clear the ListView first
444 ListView4->clear(); 471 ListView4->clear();
445 472
446 QValueList<OpieTooth::ConnectionState>::Iterator it; 473 QValueList<OpieTooth::ConnectionState>::Iterator it;
447 BTConnectionItem * connectionItem; 474 BTConnectionItem * connectionItem;
448 475
449 if ( !connectionList.isEmpty() ) { 476 if ( !connectionList.isEmpty() ) {
450 477
451 for (it = connectionList.begin(); it != connectionList.end(); ++it) { 478 for (it = connectionList.begin(); it != connectionList.end(); ++it) {
452 connectionItem = new BTConnectionItem( ListView4 , (*it) ); 479 connectionItem = new BTConnectionItem( ListView4, (*it) );
453 } 480
481 if( m_deviceList.find((*it).mac()).data() ) {
482
483 connectionItem->setName( m_deviceList.find( (*it).mac()).data()->name() );
484 }
485 }
454 } else { 486 } else {
455 ConnectionState con; 487 ConnectionState con;
456 con.setMac( tr("No connections found") ); 488 con.setMac( tr("No connections found") );
457 connectionItem = new BTConnectionItem( ListView4 , con ); 489 connectionItem = new BTConnectionItem( ListView4 , con );
458 } 490 }
459 491
460 // recall connection search after some time 492 // recall connection search after some time
461 QTimer::singleShot( 15000, this, SLOT( addConnectedDevices() ) ); 493 QTimer::singleShot( 15000, this, SLOT( addConnectedDevices() ) );
462} 494}
463 495
464 496
465/** 497/**
466 * Find out if a device can currently be reached 498 * Find out if a device can currently be reached
467 * @param device 499 * @param device
468 */ 500 */
469void BlueBase::deviceActive( const RemoteDevice &device ) { 501void BlueBase::deviceActive( const RemoteDevice &device ) {
470 // search by mac, async, gets a signal back 502 // search by mac, async, gets a signal back
471 // We should have a BTDeviceItem there or where does it get added to the map -zecke 503 // We should have a BTDeviceItem there or where does it get added to the map -zecke
472 m_localDevice->isAvailable( device.mac() ); 504 m_localDevice->isAvailable( device.mac() );
473} 505}
474 506
475 507
476/** 508/**
477 * The signal catcher. Set the avail. status on device. 509 * The signal catcher. Set the avail. status on device.
478 * @param device - the mac address 510 * @param device - the mac address
479 * @param connected - if it is avail. or not 511 * @param connected - if it is avail. or not
480 */ 512 */
481void BlueBase::deviceActive( const QString& device, bool connected ) { 513void BlueBase::deviceActive( const QString& device, bool connected ) {
482 qDebug("deviceActive slot"); 514 qDebug("deviceActive slot");
483 515
484 QMap<QString,BTDeviceItem*>::Iterator it; 516 QMap<QString,BTDeviceItem*>::Iterator it;
485 517
486 it = m_deviceList.find( device ); 518 it = m_deviceList.find( device );
487 if( it == m_deviceList.end() ) 519 if( it == m_deviceList.end() )
488 return; 520 return;
489 521
490 BTDeviceItem* deviceItem = it.data(); 522 BTDeviceItem* deviceItem = it.data();
491 523
492 524
493 if ( connected ) { 525 if ( connected ) {
494 deviceItem->setPixmap( 1, m_onPix ); 526 deviceItem->setPixmap( 1, m_onPix );
495 } else { 527 } else {
496 deviceItem->setPixmap( 1, m_offPix ); 528 deviceItem->setPixmap( 1, m_offPix );
497 } 529 }
498 m_deviceList.remove( it ); 530 m_deviceList.remove( it );
499} 531}
500 532
501 533
502/** 534/**
503 * Open the "scan for devices" dialog 535 * Open the "scan for devices" dialog
504 */ 536 */
505void BlueBase::startScan() { 537void BlueBase::startScan() {
506 ScanDialog *scan = new ScanDialog( this, "ScanDialog", 538 ScanDialog *scan = new ScanDialog( this, "ScanDialog",
507 true, WDestructiveClose ); 539 true, WDestructiveClose );
508 QObject::connect( scan, SIGNAL( selectedDevices( const QValueList<RemoteDevice>& ) ), 540 QObject::connect( scan, SIGNAL( selectedDevices( const QValueList<RemoteDevice>& ) ),
509 this, SLOT( addSearchedDevices( const QValueList<RemoteDevice>& ) ) ); 541 this, SLOT( addSearchedDevices( const QValueList<RemoteDevice>& ) ) );
510 542
511 scan->showMaximized(); 543 scan->showMaximized();
512} 544}
513 545
514 546
515/** 547/**
516 * Set the informations about the local device in information Tab 548 * Set the informations about the local device in information Tab
517 */ 549 */
diff --git a/noncore/net/opietooth/manager/bluebase.h b/noncore/net/opietooth/manager/bluebase.h
index 0326daf..743062c 100644
--- a/noncore/net/opietooth/manager/bluebase.h
+++ b/noncore/net/opietooth/manager/bluebase.h
@@ -1,92 +1,97 @@
1 1
2#ifndef BLUEBASE_H 2#ifndef BLUEBASE_H
3#define BLUEBASE_H 3#define BLUEBASE_H
4 4
5#include <qvariant.h> 5#include <qvariant.h>
6#include <qwidget.h> 6#include <qwidget.h>
7#include <qscrollview.h> 7#include <qscrollview.h>
8#include <qsplitter.h> 8#include <qsplitter.h>
9#include <qlist.h> 9#include <qlist.h>
10#include <qpixmap.h> 10#include <qpixmap.h>
11 11
12#include "bluetoothbase.h" 12#include "bluetoothbase.h"
13 13
14#include "btserviceitem.h" 14#include "btserviceitem.h"
15#include "btdeviceitem.h" 15#include "btdeviceitem.h"
16
16#include "popuphelper.h" 17#include "popuphelper.h"
17 18
18#include "bticonloader.h" 19#include "bticonloader.h"
19 20
20#include <remotedevice.h> 21#include <remotedevice.h>
21#include <manager.h> 22#include <manager.h>
22 23
23class QVBox; 24class QVBox;
24class QHBoxLayout; 25class QHBoxLayout;
25class QGridLayout; 26class QGridLayout;
26class QFrame; 27class QFrame;
27class QLabel; 28class QLabel;
28class QPushButton; 29class QPushButton;
29class QTabWidget; 30class QTabWidget;
30class QCheckBox; 31class QCheckBox;
32class BTConnectionItem;
31 33
32 34
33namespace OpieTooth { 35namespace OpieTooth {
34 36
35 class BlueBase : public BluetoothBase { 37 class BlueBase : public BluetoothBase {
36 Q_OBJECT 38 Q_OBJECT
37 39
38 public: 40 public:
39 BlueBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 41 BlueBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
40 ~BlueBase(); 42 ~BlueBase();
41 43
42 protected: 44 protected:
43 45
44 46
45 private slots: 47 private slots:
46 void startScan(); 48 void startScan();
47 49
48 private: 50 private:
49 bool find( const RemoteDevice& device ); 51 bool find( const RemoteDevice& device );
50 void readConfig(); 52 void readConfig();
51 void writeConfig(); 53 void writeConfig();
52 void readSavedDevices(); 54 void readSavedDevices();
53 void writeSavedDevices(); 55 void writeSavedDevices();
54 void writeToHciConfig(); 56 void writeToHciConfig();
55 QString status()const; 57 QString status()const;
56 void initGui(); 58 void initGui();
57 void setInfo(); 59 void setInfo();
60
58 PopupHelper m_popHelper; 61 PopupHelper m_popHelper;
59 Manager *m_localDevice; 62 Manager *m_localDevice;
60 QMap<QString,BTDeviceItem*> m_deviceList; 63 QMap<QString,BTDeviceItem*> m_deviceList;
61 64
62 void deviceActive( const RemoteDevice &device ); 65 void deviceActive( const RemoteDevice &device );
63 66
64 QString m_deviceName; 67 QString m_deviceName;
65 QString m_defaultPasskey; 68 QString m_defaultPasskey;
66 bool m_useEncryption; 69 bool m_useEncryption;
67 bool m_enableAuthentification; 70 bool m_enableAuthentification;
68 bool m_enablePagescan; 71 bool m_enablePagescan;
69 bool m_enableInquiryscan; 72 bool m_enableInquiryscan;
70 73
71 QPixmap m_offPix; 74 QPixmap m_offPix;
72 QPixmap m_onPix; 75 QPixmap m_onPix;
73 QPixmap m_findPix; 76 QPixmap m_findPix;
74 77
75 BTIconLoader *m_iconLoader; 78 BTIconLoader *m_iconLoader;
76 79
77 private slots: 80 private slots:
78 void addSearchedDevices( const QValueList<RemoteDevice> &newDevices ); 81 void addSearchedDevices( const QValueList<RemoteDevice> &newDevices );
79 void addServicesToDevice( BTDeviceItem *item ); 82 void addServicesToDevice( BTDeviceItem *item );
80 void addServicesToDevice( const QString& device, Services::ValueList ); 83 void addServicesToDevice( const QString& device, Services::ValueList );
81 void addConnectedDevices(); 84 void addConnectedDevices();
82 void addConnectedDevices( ConnectionState::ValueList ); 85 void addConnectedDevices( ConnectionState::ValueList );
83 void startServiceActionClicked( QListViewItem *item ); 86 void startServiceActionClicked( QListViewItem *item );
84 void startServiceActionHold( QListViewItem *, const QPoint &, int ); 87 void startServiceActionHold( QListViewItem *, const QPoint &, int );
85 void deviceActive( const QString& mac, bool connected ); 88 void deviceActive( const QString& mac, bool connected );
86 void applyConfigChanges(); 89 void applyConfigChanges();
90 void addSignalStrength();
91 void addSignalStrength( const QString& mac, const QString& strengh );
87 92
88 }; 93 };
89 94
90} 95}
91 96
92#endif 97#endif
diff --git a/noncore/net/opietooth/manager/bluetoothbase.ui b/noncore/net/opietooth/manager/bluetoothbase.ui
index 869a9cb..b51c8c6 100644
--- a/noncore/net/opietooth/manager/bluetoothbase.ui
+++ b/noncore/net/opietooth/manager/bluetoothbase.ui
@@ -137,128 +137,142 @@
137 <cstring>PushButton2</cstring> 137 <cstring>PushButton2</cstring>
138 </property> 138 </property>
139 <property stdset="1"> 139 <property stdset="1">
140 <name>geometry</name> 140 <name>geometry</name>
141 <rect> 141 <rect>
142 <x>40</x> 142 <x>40</x>
143 <y>231</y> 143 <y>231</y>
144 <width>154</width> 144 <width>154</width>
145 <height>30</height> 145 <height>30</height>
146 </rect> 146 </rect>
147 </property> 147 </property>
148 <property stdset="1"> 148 <property stdset="1">
149 <name>sizePolicy</name> 149 <name>sizePolicy</name>
150 <sizepolicy> 150 <sizepolicy>
151 <hsizetype>0</hsizetype> 151 <hsizetype>0</hsizetype>
152 <vsizetype>0</vsizetype> 152 <vsizetype>0</vsizetype>
153 </sizepolicy> 153 </sizepolicy>
154 </property> 154 </property>
155 <property stdset="1"> 155 <property stdset="1">
156 <name>text</name> 156 <name>text</name>
157 <string>Scan for Devices</string> 157 <string>Scan for Devices</string>
158 </property> 158 </property>
159 </widget> 159 </widget>
160 </widget> 160 </widget>
161 <widget> 161 <widget>
162 <class>QWidget</class> 162 <class>QWidget</class>
163 <property stdset="1"> 163 <property stdset="1">
164 <name>name</name> 164 <name>name</name>
165 <cstring>tab</cstring> 165 <cstring>tab</cstring>
166 </property> 166 </property>
167 <attribute> 167 <attribute>
168 <name>title</name> 168 <name>title</name>
169 <string>Connections</string> 169 <string>Connections</string>
170 </attribute> 170 </attribute>
171 <widget> 171 <widget>
172 <class>QListView</class> 172 <class>QListView</class>
173 <column> 173 <column>
174 <property> 174 <property>
175 <name>text</name> 175 <name>text</name>
176 <string>Device Name</string> 176 <string>Device Name</string>
177 </property> 177 </property>
178 <property> 178 <property>
179 <name>clickable</name> 179 <name>clickable</name>
180 <bool>true</bool> 180 <bool>true</bool>
181 </property> 181 </property>
182 <property> 182 <property>
183 <name>resizeable</name> 183 <name>resizeable</name>
184 <bool>true</bool> 184 <bool>true</bool>
185 </property> 185 </property>
186 </column> 186 </column>
187 <column> 187 <column>
188 <property> 188 <property>
189 <name>text</name> 189 <name>text</name>
190 <string>Connection type</string> 190 <string>Connection type</string>
191 </property> 191 </property>
192 <property> 192 <property>
193 <name>clickable</name> 193 <name>clickable</name>
194 <bool>true</bool> 194 <bool>true</bool>
195 </property> 195 </property>
196 <property> 196 <property>
197 <name>resizeable</name> 197 <name>resizeable</name>
198 <bool>true</bool> 198 <bool>true</bool>
199 </property> 199 </property>
200 </column> 200 </column>
201 <column>
202 <property>
203 <name>text</name>
204 <string>Signal</string>
205 </property>
206 <property>
207 <name>clickable</name>
208 <bool>true</bool>
209 </property>
210 <property>
211 <name>resizeable</name>
212 <bool>true</bool>
213 </property>
214 </column>
201 <property stdset="1"> 215 <property stdset="1">
202 <name>name</name> 216 <name>name</name>
203 <cstring>ListView4</cstring> 217 <cstring>ListView4</cstring>
204 </property> 218 </property>
205 <property stdset="1"> 219 <property stdset="1">
206 <name>geometry</name> 220 <name>geometry</name>
207 <rect> 221 <rect>
208 <x>0</x> 222 <x>0</x>
209 <y>0</y> 223 <y>0</y>
210 <width>240</width> 224 <width>240</width>
211 <height>240</height> 225 <height>240</height>
212 </rect> 226 </rect>
213 </property> 227 </property>
214 </widget> 228 </widget>
215 </widget> 229 </widget>
216 <widget> 230 <widget>
217 <class>QWidget</class> 231 <class>QWidget</class>
218 <property stdset="1"> 232 <property stdset="1">
219 <name>name</name> 233 <name>name</name>
220 <cstring>tab</cstring> 234 <cstring>tab</cstring>
221 </property> 235 </property>
222 <attribute> 236 <attribute>
223 <name>title</name> 237 <name>title</name>
224 <string>Config</string> 238 <string>Config</string>
225 </attribute> 239 </attribute>
226 <widget> 240 <widget>
227 <class>QLabel</class> 241 <class>QLabel</class>
228 <property stdset="1"> 242 <property stdset="1">
229 <name>name</name> 243 <name>name</name>
230 <cstring>deviceNameLabel</cstring> 244 <cstring>deviceNameLabel</cstring>
231 </property> 245 </property>
232 <property stdset="1"> 246 <property stdset="1">
233 <name>geometry</name> 247 <name>geometry</name>
234 <rect> 248 <rect>
235 <x>10</x> 249 <x>10</x>
236 <y>10</y> 250 <y>10</y>
237 <width>70</width> 251 <width>70</width>
238 <height>20</height> 252 <height>20</height>
239 </rect> 253 </rect>
240 </property> 254 </property>
241 <property stdset="1"> 255 <property stdset="1">
242 <name>text</name> 256 <name>text</name>
243 <string>Device Name</string> 257 <string>Device Name</string>
244 </property> 258 </property>
245 </widget> 259 </widget>
246 <widget> 260 <widget>
247 <class>QLabel</class> 261 <class>QLabel</class>
248 <property stdset="1"> 262 <property stdset="1">
249 <name>name</name> 263 <name>name</name>
250 <cstring>passkeyLabel</cstring> 264 <cstring>passkeyLabel</cstring>
251 </property> 265 </property>
252 <property stdset="1"> 266 <property stdset="1">
253 <name>geometry</name> 267 <name>geometry</name>
254 <rect> 268 <rect>
255 <x>10</x> 269 <x>10</x>
256 <y>50</y> 270 <y>50</y>
257 <width>80</width> 271 <width>80</width>
258 <height>20</height> 272 <height>20</height>
259 </rect> 273 </rect>
260 </property> 274 </property>
261 <property stdset="1"> 275 <property stdset="1">
262 <name>text</name> 276 <name>text</name>
263 <string>Default Passkey</string> 277 <string>Default Passkey</string>
264 </property> 278 </property>
diff --git a/noncore/net/opietooth/manager/btconnectionitem.cpp b/noncore/net/opietooth/manager/btconnectionitem.cpp
index b57d1b3..c565c47 100644
--- a/noncore/net/opietooth/manager/btconnectionitem.cpp
+++ b/noncore/net/opietooth/manager/btconnectionitem.cpp
@@ -1,24 +1,42 @@
1#include <connection.h> 1#include <connection.h>
2#include "btconnectionitem.h" 2#include "btconnectionitem.h"
3 3
4using namespace OpieTooth; 4using namespace OpieTooth;
5 5
6BTConnectionItem::BTConnectionItem( QListView* parent, const ConnectionState& con ) 6BTConnectionItem::BTConnectionItem( QListView* parent, const ConnectionState& con )
7 : BTListItem( parent ){ 7 : BTListItem( parent ){
8 m_con = con; 8 m_con = con;
9 setText(0, m_con.mac() ); 9 setText(0, m_con.mac() );
10 setText(1, m_con.connectionMode() ); 10 setText(1, m_con.connectionMode() );
11} 11}
12BTConnectionItem::~BTConnectionItem() { 12BTConnectionItem::~BTConnectionItem() {
13 13
14} 14}
15QString BTConnectionItem::type() const { 15QString BTConnectionItem::type() const {
16 return QString::fromLatin1("connection"); 16 return QString::fromLatin1("connection");
17} 17}
18int BTConnectionItem::typeId() const { 18int BTConnectionItem::typeId() const {
19 return Connection; 19 return Connection;
20} 20}
21ConnectionState BTConnectionItem::connection() const { 21ConnectionState BTConnectionItem::connection() const {
22 return m_con; 22 return m_con;
23} 23}
24 24
25void BTConnectionItem::setName( QString name ) {
26 m_name = name;
27 setText( 0, m_name );
28}
29
30QString BTConnectionItem::name() {
31 return m_name;
32}
33
34
35void BTConnectionItem::setSignalStrength( QString strength ) {
36 m_signalStrength = strength;
37 setText( 2, m_signalStrength );
38}
39
40QString BTConnectionItem::signalStrength() {
41 return m_signalStrength;
42}
diff --git a/noncore/net/opietooth/manager/btconnectionitem.h b/noncore/net/opietooth/manager/btconnectionitem.h
index 3c0cd79..9ab745e 100644
--- a/noncore/net/opietooth/manager/btconnectionitem.h
+++ b/noncore/net/opietooth/manager/btconnectionitem.h
@@ -1,26 +1,32 @@
1 1
2#ifndef OPIE_TOOTH_BT_CONNECTION_ITEM_H 2#ifndef OPIE_TOOTH_BT_CONNECTION_ITEM_H
3#define OPIE_TOOTH_BT_CONNECTION_ITEM_H 3#define OPIE_TOOTH_BT_CONNECTION_ITEM_H
4 4
5 5
6#include "btlistitem.h" 6#include "btlistitem.h"
7 7
8namespace OpieTooth { 8namespace OpieTooth {
9 9
10 class ConnectionState; 10 class ConnectionState;
11 class BTConnectionItem : public BTListItem { 11 class BTConnectionItem : public BTListItem {
12 public: 12 public:
13 BTConnectionItem( QListView* parent, const ConnectionState& state ); 13 BTConnectionItem( QListView* parent, const ConnectionState& state );
14 ~BTConnectionItem(); 14 ~BTConnectionItem();
15 QString type()const; 15 QString type()const;
16 QString name();
17 QString signalStrength();
16 int typeId() const; 18 int typeId() const;
17 ConnectionState connection()const; 19 ConnectionState connection()const;
20 void setSignalStrength( QString );
21 void setName( QString );
22
18 private: 23 private:
19 ConnectionState m_con; 24 ConnectionState m_con;
20 25 QString m_name;
26 QString m_signalStrength;
21 }; 27 };
22 28
23}; 29};
24 30
25 31
26#endif 32#endif