Diffstat (limited to 'noncore/net/opietooth/manager/bluebase.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/opietooth/manager/bluebase.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp index 3e7e2ab..d023302 100644 --- a/noncore/net/opietooth/manager/bluebase.cpp +++ b/noncore/net/opietooth/manager/bluebase.cpp @@ -15,104 +15,109 @@ * * ***************************************************************************/ #include "bluebase.h" #include "scandialog.h" #include "hciconfwrapper.h" #include <qframe.h> #include <qlabel.h> #include <qpushbutton.h> #include <qlayout.h> #include <qvariant.h> #include <qwhatsthis.h> #include <qimage.h> #include <qpixmap.h> #include <qtabwidget.h> #include <qscrollview.h> #include <qvbox.h> #include <qmessagebox.h> #include <qcheckbox.h> #include <qlineedit.h> #include <qlistview.h> #include <qdir.h> #include <qpopupmenu.h> +#include <qtimer.h> #include <qpe/resource.h> #include <qpe/config.h> #include <remotedevice.h> namespace OpieTooth { BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) : BluetoothBase( parent, name, fl ) { localDevice = new Manager( "hci0" ); connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) ); connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) ); // not good since lib is async // connect( ListView2, SIGNAL( expanded ( QListViewItem* ) ), // this, SLOT( addServicesToDevice( QListViewItem * ) ) ); connect( ListView2, SIGNAL( clicked( QListViewItem* )), this, SLOT( startServiceActionClicked( QListViewItem* ) ) ); // hehe, cast right later connect( ListView2, SIGNAL( rightButtonClicked( QListViewItem *, const QPoint &, int ) ), this, SLOT(startServiceActionHold( QListViewItem *, const QPoint &, int) ) ); connect( localDevice , SIGNAL( foundServices( const QString& , Services::ValueList ) ), this, SLOT( addServicesToDevice( const QString& , Services::ValueList ) ) ); connect( localDevice, SIGNAL( available( const QString&, bool ) ), this, SLOT( deviceActive( const QString& , bool ) ) ); + connect( localDevice, SIGNAL( connections( Connection::ValueList ) ), + this, SLOT( addConnectedDevices( Connection::ValueList ) ) ); //Load all icons needed offPix = Resource::loadPixmap( "editdelete" ); onPix = Resource::loadPixmap( "installed" ); QPalette pal = this->palette(); QColor col = pal.color( QPalette::Active, QColorGroup::Background ); pal.setColor( QPalette::Active, QColorGroup::Button, col ); pal.setColor( QPalette::Inactive, QColorGroup::Button, col ); pal.setColor( QPalette::Normal, QColorGroup::Button, col ); pal.setColor( QPalette::Disabled, QColorGroup::Button, col ); this->setPalette( pal ); setCaption( tr( "Bluetooth Manager" ) ); readConfig(); initGui(); //TESTING ListView2->setRootIsDecorated(true); BTListItem *topLV2 = new BTListItem( ListView2, "Siemens S45", "", "device" ); topLV2->setPixmap( 1, onPix ); (void) new BTListItem( topLV2, "Serial" ,"", "service" ); (void) new BTListItem( topLV2, "BlueNiC" , "", "service" ); writeToHciConfig(); + // search conncetions + addConnectedDevices(); } /** * Reads all options from the config file */ void BlueBase::readConfig() { Config cfg( "bluetoothmanager" ); cfg.setGroup( "bluezsettings" ); deviceName = cfg.readEntry( "name" , "No name" ); // name the device should identify with defaultPasskey = cfg.readEntryCrypt( "passkey" , "" ); // <- hmm, look up how good the trolls did that, maybe too weak useEncryption = cfg.readNumEntry( "useEncryption" , 1 ); enableAuthentification = cfg.readNumEntry( "enableAuthentification" , 1 ); enablePagescan = cfg.readNumEntry( "enablePagescan" , 1 ); enableInquiryscan = cfg.readNumEntry( "enableInquiryscan" , 1 ); } /** * Writes all options to the config file */ @@ -274,53 +279,48 @@ namespace OpieTooth { // falls nötig hcid killhupen - die funktionalität adden } /** * Add fresh found devices from scan dialog to the listing * */ void BlueBase::addSearchedDevices( QList<RemoteDevice> &newDevices ) { BTListItem * deviceItem; QListIterator<RemoteDevice> it( newDevices ); for( ; it.current() ; ++it ) { RemoteDevice *dev = it.current(); deviceItem = new BTListItem( ListView2 , dev->name(), dev->mac(), "device" ); deviceItem->setExpandable ( true ); // look if device is avail. atm, async deviceActive( dev ); - // move into the c'tor - // deviceItem->setMac( dev->mac() ); - // what kind of entry is it. - //deviceItem->setType( "device"); - // ggf auch hier? addServicesToDevice( deviceItem ); } } /** * Action that is toggled on entrys on click */ void BlueBase::startServiceActionClicked( QListViewItem *item ) { } /** * Action that are toggled on hold (mostly QPopups i guess) */ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & point, int column ) { QPopupMenu *menu = new QPopupMenu(); int ret=0; @@ -389,84 +389,90 @@ namespace OpieTooth { // delete } /** * Overloaded. This one it the one that is connected to the foundServices signal * @param device the mac address of the remote device * @param servicesList the list with the service the device has. */ void BlueBase::addServicesToDevice( const QString& device, Services::ValueList servicesList ) { qDebug("fill services list"); QMap<QString,BTListItem*>::Iterator it; BTListItem* deviceItem; // get the right devices which requested the search for( it = deviceList.begin(); it != deviceList.end(); ++it ) { if ( it.key() == device ) { deviceItem = it.data(); } } - - // empty entries - // QListViewItem * myChild = deviceItem->firstChild(); - //QList<QListViewItem*> tmpList; - //while( myChild ) { - // tmpList.append(myChild); - // myChild = myChild->nextSibling(); - // } - - QValueList<OpieTooth::Services>::Iterator it2; BTListItem * serviceItem; if (!servicesList.isEmpty() ) { // add services for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) { serviceItem = new BTListItem( deviceItem , (*it2).serviceName() , "" , "service" ); //serviceItem->setText(4, "service"); } } else { serviceItem = new BTListItem( deviceItem , tr("no services found"), "" , "service" ); //serviceItem->setText(4, "service"); } } /** * Add the existing connections (pairs) to the connections tab. - * + * This one triggers the search */ void BlueBase::addConnectedDevices() { + localDevice->searchConnections(); + } - //mac address + void BlueBase::addConnectedDevices( Connection::ValueList connectionList ) { + + QValueList<OpieTooth::Connection>::Iterator it; + BTListItem * connectionItem; + + if ( !connectionList.isEmpty() ) { + + for (it = connectionList.begin(); it != connectionList.end(); ++it) { + connectionItem = new BTListItem( ListView4 , (*it).mac() , (*it).mac() , "connection" ); + } + } else { + connectionItem = new BTListItem( ListView4 , tr("No connections found"), "", "connection" ); + } + // recall connection search after some time + QTimer::singleShot( 20000, this, SLOT( addConnectedDevices() ) ); } /** * Find out if a device can currently be reached */ void BlueBase::deviceActive( RemoteDevice *device ) { // search by mac, async, gets a signal back localDevice->isAvailable( device->mac() ); } /** * The signal catcher. Set the avail. status on device. * @param device - the mac address * @param connected - if it is avail. or not */ void BlueBase::deviceActive( const QString& device, bool connected ) { qDebug("deviceActive slot"); QMap<QString,BTListItem*>::Iterator it; BTListItem* deviceItem; |