summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/manager/bluebase.cpp
Unidiff
Diffstat (limited to 'noncore/net/opietooth/manager/bluebase.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/bluebase.cpp44
1 files changed, 20 insertions, 24 deletions
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp
index af1cd23..0649514 100644
--- a/noncore/net/opietooth/manager/bluebase.cpp
+++ b/noncore/net/opietooth/manager/bluebase.cpp
@@ -50,79 +50,73 @@ using namespace Opie::Core;
50#include <qlist.h> 50#include <qlist.h>
51 51
52/* STD */ 52/* STD */
53#include <remotedevice.h> 53#include <remotedevice.h>
54#include <services.h> 54#include <services.h>
55#include <stdlib.h> 55#include <stdlib.h>
56 56
57using namespace OpieTooth; 57using namespace OpieTooth;
58 58
59BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) 59BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
60 : BluetoothBase( parent, name, fl ) 60 : BluetoothBase( parent, name, fl )
61{ 61{
62
63 m_localDevice = new Manager( "hci0" ); 62 m_localDevice = new Manager( "hci0" );
64 63
65 connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) ); 64 connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) );
66 connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) ); 65 connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) );
67 66
68 connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) ); 67 connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) );
69 // not good since lib is async 68
70 // connect( devicesView, SIGNAL( expanded(QListViewItem*) ),
71 // this, SLOT( addServicesToDevice(QListViewItem*) ) );
72 connect( devicesView, SIGNAL( clicked(QListViewItem*)), 69 connect( devicesView, SIGNAL( clicked(QListViewItem*)),
73 this, SLOT( startServiceActionClicked(QListViewItem*) ) ); 70 this, SLOT( startServiceActionClicked(QListViewItem*) ) );
74 connect( devicesView, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ), 71 connect( devicesView, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ),
75 this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) ); 72 this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) );
76 connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ), 73 connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ),
77 this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) ); 74 this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) );
78 connect( m_localDevice, SIGNAL( available(const QString&,bool) ), 75 connect( m_localDevice, SIGNAL( available(const QString&,bool) ),
79 this, SLOT( deviceActive(const QString&,bool) ) ); 76 this, SLOT( deviceActive(const QString&,bool) ) );
80 connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ), 77 connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ),
81 this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) ); 78 this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) );
82 connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ), 79 connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ),
83 this, SLOT( addSignalStrength(const QString&,const QString&) ) ); 80 this, SLOT( addSignalStrength(const QString&,const QString&) ) );
84 81
85
86 // let hold be rightButtonClicked() 82 // let hold be rightButtonClicked()
87 QPEApplication::setStylusOperation( devicesView->viewport(), QPEApplication::RightOnHold); 83 QPEApplication::setStylusOperation( devicesView->viewport(), QPEApplication::RightOnHold);
88 QPEApplication::setStylusOperation( connectionsView->viewport(), QPEApplication::RightOnHold); 84 QPEApplication::setStylusOperation( connectionsView->viewport(), QPEApplication::RightOnHold);
89 85
90 //Load all icons needed 86 //Load all icons needed
91 m_offPix = Resource::loadPixmap( "opietooth/notconnected" ); 87 m_offPix = Resource::loadPixmap( "opietooth/notconnected" );
92 m_onPix = Resource::loadPixmap( "opietooth/connected" ); 88 m_onPix = Resource::loadPixmap( "opietooth/connected" );
93 m_findPix = Resource::loadPixmap( "opietooth/find" ); 89 m_findPix = Resource::loadPixmap( "opietooth/find" );
94 90
95 QPalette pal = this->palette(); 91 QPalette pal = this->palette();
96 QColor col = pal.color( QPalette::Active, QColorGroup::Background ); 92 QColor col = pal.color( QPalette::Active, QColorGroup::Background );
97 pal.setColor( QPalette::Active, QColorGroup::Button, col ); 93 pal.setColor( QPalette::Active, QColorGroup::Button, col );
98 pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); 94 pal.setColor( QPalette::Inactive, QColorGroup::Button, col );
99 pal.setColor( QPalette::Normal, QColorGroup::Button, col ); 95 pal.setColor( QPalette::Normal, QColorGroup::Button, col );
100 pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); 96 pal.setColor( QPalette::Disabled, QColorGroup::Button, col );
101 this->setPalette( pal ); 97 this->setPalette( pal );
102 98
103 setCaption( tr( "Bluetooth Manager" ) ); 99 setCaption( tr( "Bluetooth Manager" ) );
104 100
105 readConfig(); 101 readConfig();
106 initGui(); 102 initGui();
107 103
108 devicesView->setRootIsDecorated(true); 104 devicesView->setRootIsDecorated(true);
109 105 m_iconLoader = new BTIconLoader();
110
111 writeToHciConfig(); 106 writeToHciConfig();
112 // search conncetions
113 addConnectedDevices(); 107 addConnectedDevices();
114 addSignalStrength();
115 m_iconLoader = new BTIconLoader();
116 readSavedDevices(); 108 readSavedDevices();
109 addServicesToDevices();
110 QTimer::singleShot( 3000, this, SLOT( addServicesToDevices() ) );
117} 111}
118 112
119/** 113/**
120 * Reads all options from the config file 114 * Reads all options from the config file
121 */ 115 */
122void BlueBase::readConfig() 116void BlueBase::readConfig()
123{ 117{
124 118
125 Config cfg( "bluetoothmanager" ); 119 Config cfg( "bluetoothmanager" );
126 cfg.setGroup( "bluezsettings" ); 120 cfg.setGroup( "bluezsettings" );
127 121
128 m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with 122 m_deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with
@@ -162,39 +156,39 @@ void BlueBase::writeToHciConfig()
162 hciconf.load(); 156 hciconf.load();
163 hciconf.setPinHelper( QPEApplication::qpeDir() + "bin/bluepin" ); 157 hciconf.setPinHelper( QPEApplication::qpeDir() + "bin/bluepin" );
164 hciconf.setName( m_deviceName ); 158 hciconf.setName( m_deviceName );
165 hciconf.setEncrypt( m_useEncryption ); 159 hciconf.setEncrypt( m_useEncryption );
166 hciconf.setAuth( m_enableAuthentification ); 160 hciconf.setAuth( m_enableAuthentification );
167 hciconf.setPscan( m_enablePagescan ); 161 hciconf.setPscan( m_enablePagescan );
168 hciconf.setIscan( m_enableInquiryscan ); 162 hciconf.setIscan( m_enableInquiryscan );
169 hciconf.save(); 163 hciconf.save();
170} 164}
171 165
172 166
173/** 167/**
174 * Read the list of allready known devices 168 * Read the list of already known devices
175 */ 169 */
176void BlueBase::readSavedDevices() 170void BlueBase::readSavedDevices()
177{ 171{
178 172
179 QValueList<RemoteDevice> loadedDevices; 173 QValueList<RemoteDevice> loadedDevices;
180 DeviceHandler handler; 174 DeviceHandler handler;
181 loadedDevices = handler.load(); 175 loadedDevices = handler.load();
182 176
183 addSearchedDevices( loadedDevices ); 177 addSearchedDevices( loadedDevices );
184} 178}
185 179
186 180
187/** 181/**
188 * Write the list of allready known devices 182 * Write the list of already known devices
189 */ 183 */
190void BlueBase::writeSavedDevices() 184void BlueBase::writeSavedDevices()
191{ 185{
192 QListViewItemIterator it( devicesView ); 186 QListViewItemIterator it( devicesView );
193 BTListItem* item; 187 BTListItem* item;
194 BTDeviceItem* device; 188 BTDeviceItem* device;
195 RemoteDevice::ValueList list; 189 RemoteDevice::ValueList list;
196 for ( ; it.current(); ++it ) 190 for ( ; it.current(); ++it )
197 { 191 {
198 item = (BTListItem*)it.current(); 192 item = (BTListItem*)it.current();
199 if(item->typeId() != BTListItem::Device ) 193 if(item->typeId() != BTListItem::Device )
200 continue; 194 continue;
@@ -286,27 +280,24 @@ void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices )
286 for( it = newDevices.begin(); it != newDevices.end() ; ++it ) 280 for( it = newDevices.begin(); it != newDevices.end() ; ++it )
287 { 281 {
288 282
289 if (find( (*it) )) // is already inserted 283 if (find( (*it) )) // is already inserted
290 continue; 284 continue;
291 285
292 deviceItem = new BTDeviceItem( devicesView , (*it) ); 286 deviceItem = new BTDeviceItem( devicesView , (*it) );
293 deviceItem->setPixmap( 1, m_findPix ); 287 deviceItem->setPixmap( 1, m_findPix );
294 deviceItem->setExpandable ( true ); 288 deviceItem->setExpandable ( true );
295 289
296 // look if device is avail. atm, async 290 // look if device is avail. atm, async
297 deviceActive( (*it) ); 291 deviceActive( (*it) );
298
299 // ggf auch hier?
300 addServicesToDevice( deviceItem );
301 } 292 }
302} 293}
303 294
304 295
305/** 296/**
306 * Action that is toggled on entrys on click 297 * Action that is toggled on entrys on click
307 */ 298 */
308void BlueBase::startServiceActionClicked( QListViewItem */*item*/ ) 299void BlueBase::startServiceActionClicked( QListViewItem */*item*/ )
309{} 300{}
310 301
311 302
312/** 303/**
@@ -389,48 +380,57 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin
389 ; 380 ;
390 } 381 }
391 else if ( ret == test1 ) 382 else if ( ret == test1 )
392 { 383 {
393 ; 384 ;
394 } 385 }
395 delete popup; 386 delete popup;
396 } 387 }
397 delete menu; 388 delete menu;
398} 389}
399 390
400 391
392void BlueBase::addServicesToDevices()
393{
394 odebug << "BlueBase::addServicesToDevices()" << oendl;
395 BTDeviceItem* item = (BTDeviceItem*) devicesView->firstChild();
396 while ( item )
397 {
398 addServicesToDevice( item );
399 item = (BTDeviceItem*) static_cast<QListViewItem*>( item )->nextSibling();
400 }
401}
402
401/** 403/**
402 * Search and display avail. services for a device (on expand from device listing) 404 * Search and display avail. services for a device (on expand from device listing)
403 * @param item the service item returned 405 * @param item the service item returned
404 */ 406 */
405void BlueBase::addServicesToDevice( BTDeviceItem * item ) 407void BlueBase::addServicesToDevice( BTDeviceItem * item )
406{ 408{
407 odebug << "addServicesToDevice" << oendl; 409 odebug << "BlueBase::addServicesToDevice" << oendl;
408 // row of mac adress text(3) 410 // row of mac adress text(3)
409 RemoteDevice device = item->remoteDevice(); 411 RemoteDevice device = item->remoteDevice();
410 m_deviceList.insert( item->mac() , item ); 412 m_deviceList.insert( item->mac() , item );
411 // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back 413 // and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back
412 m_localDevice->searchServices( device ); 414 m_localDevice->searchServices( device );
413} 415}
414 416
415 417
416/** 418/**
417 * Overloaded. This one it the one that is
418 ted to the foundServices signal
419 * @param device the mac address of the remote device 419 * @param device the mac address of the remote device
420 * @param servicesList the list with the service the device has. 420 * @param servicesList the list with the service the device has.
421 */ 421 */
422void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) 422void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList )
423{ 423{
424 odebug << "fill services list" << oendl; 424 odebug << "BlueBase::fill services list" << oendl;
425 425
426 QMap<QString,BTDeviceItem*>::Iterator it; 426 QMap<QString,BTDeviceItem*>::Iterator it;
427 BTDeviceItem* deviceItem = 0; 427 BTDeviceItem* deviceItem = 0;
428 428
429 // get the right devices which requested the search 429 // get the right devices which requested the search
430 it = m_deviceList.find( device ); 430 it = m_deviceList.find( device );
431 if( it == m_deviceList.end() ) 431 if( it == m_deviceList.end() )
432 return; 432 return;
433 deviceItem = it.data(); 433 deviceItem = it.data();
434 434
435 // remove previous entries 435 // remove previous entries
436 QList<QListViewItem> tempList; 436 QList<QListViewItem> tempList;
@@ -467,28 +467,24 @@ void BlueBase::addServicesToDevice( const QString& device, Services::ValueList s
467 } 467 }
468 } 468 }
469 else 469 else
470 { 470 {
471 Services s1; 471 Services s1;
472 s1.setServiceName( tr("no services found") ); 472 s1.setServiceName( tr("no services found") );
473 serviceItem = new BTServiceItem( deviceItem, s1 ); 473 serviceItem = new BTServiceItem( deviceItem, s1 );
474 } 474 }
475 // now remove them from the list 475 // now remove them from the list
476 m_deviceList.remove( it ); 476 m_deviceList.remove( it );
477} 477}
478 478
479
480
481
482
483void BlueBase::addSignalStrength() 479void BlueBase::addSignalStrength()
484{ 480{
485 481
486 QListViewItemIterator it( connectionsView ); 482 QListViewItemIterator it( connectionsView );
487 for ( ; it.current(); ++it ) 483 for ( ; it.current(); ++it )
488 { 484 {
489 m_localDevice->signalStrength( ((BTConnectionItem*)it.current() )->connection().mac() ); 485 m_localDevice->signalStrength( ((BTConnectionItem*)it.current() )->connection().mac() );
490 } 486 }
491 487
492 QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) ); 488 QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) );
493} 489}
494 490
@@ -503,24 +499,25 @@ void BlueBase::addSignalStrength( const QString& mac, const QString& strength )
503 ((BTConnectionItem*)it.current() )->setSignalStrength( strength ); 499 ((BTConnectionItem*)it.current() )->setSignalStrength( strength );
504 } 500 }
505 } 501 }
506} 502}
507 503
508/** 504/**
509 * Add the existing connections (pairs) to the connections tab. 505 * Add the existing connections (pairs) to the connections tab.
510 * This one triggers the search 506 * This one triggers the search
511 */ 507 */
512void BlueBase::addConnectedDevices() 508void BlueBase::addConnectedDevices()
513{ 509{
514 m_localDevice->searchConnections(); 510 m_localDevice->searchConnections();
511 QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) );
515} 512}
516 513
517/** 514/**
518 * This adds the found connections to the connection tab. 515 * This adds the found connections to the connection tab.
519 * @param connectionList the ValueList with all current connections 516 * @param connectionList the ValueList with all current connections
520 */ 517 */
521void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) 518void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList )
522{ 519{
523 520
524 QValueList<OpieTooth::ConnectionState>::Iterator it; 521 QValueList<OpieTooth::ConnectionState>::Iterator it;
525 BTConnectionItem * connectionItem; 522 BTConnectionItem * connectionItem;
526 523
@@ -606,25 +603,24 @@ void BlueBase::deviceActive( const RemoteDevice &device )
606void BlueBase::deviceActive( const QString& device, bool connected ) 603void BlueBase::deviceActive( const QString& device, bool connected )
607{ 604{
608 odebug << "deviceActive slot" << oendl; 605 odebug << "deviceActive slot" << oendl;
609 606
610 QMap<QString,BTDeviceItem*>::Iterator it; 607 QMap<QString,BTDeviceItem*>::Iterator it;
611 608
612 it = m_deviceList.find( device ); 609 it = m_deviceList.find( device );
613 if( it == m_deviceList.end() ) 610 if( it == m_deviceList.end() )
614 return; 611 return;
615 612
616 BTDeviceItem* deviceItem = it.data(); 613 BTDeviceItem* deviceItem = it.data();
617 614
618
619 if ( connected ) 615 if ( connected )
620 { 616 {
621 deviceItem->setPixmap( 1, m_onPix ); 617 deviceItem->setPixmap( 1, m_onPix );
622 } 618 }
623 else 619 else
624 { 620 {
625 deviceItem->setPixmap( 1, m_offPix ); 621 deviceItem->setPixmap( 1, m_offPix );
626 } 622 }
627 m_deviceList.remove( it ); 623 m_deviceList.remove( it );
628} 624}
629 625
630 626