summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/manager/bluebase.cpp
Side-by-side diff
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
@@ -56,22 +56,19 @@ using namespace Opie::Core;
using namespace OpieTooth;
BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
: BluetoothBase( parent, name, fl )
{
-
m_localDevice = new Manager( "hci0" );
connect( PushButton2, SIGNAL( clicked() ), this, SLOT(startScan() ) );
connect( configApplyButton, SIGNAL(clicked() ), this, SLOT(applyConfigChanges() ) );
connect( rfcommBindButton, SIGNAL( clicked() ), this, SLOT( rfcommDialog() ) );
- // not good since lib is async
- // connect( devicesView, SIGNAL( expanded(QListViewItem*) ),
- // this, SLOT( addServicesToDevice(QListViewItem*) ) );
+
connect( devicesView, SIGNAL( clicked(QListViewItem*)),
this, SLOT( startServiceActionClicked(QListViewItem*) ) );
connect( devicesView, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ),
this, SLOT(startServiceActionHold(QListViewItem*,const QPoint&,int) ) );
connect( m_localDevice , SIGNAL( foundServices(const QString&,Services::ValueList) ),
this, SLOT( addServicesToDevice(const QString&,Services::ValueList) ) );
@@ -79,13 +76,12 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
this, SLOT( deviceActive(const QString&,bool) ) );
connect( m_localDevice, SIGNAL( connections(ConnectionState::ValueList) ),
this, SLOT( addConnectedDevices(ConnectionState::ValueList) ) );
connect( m_localDevice, SIGNAL( signalStrength(const QString&,const QString&) ),
this, SLOT( addSignalStrength(const QString&,const QString&) ) );
-
// let hold be rightButtonClicked()
QPEApplication::setStylusOperation( devicesView->viewport(), QPEApplication::RightOnHold);
QPEApplication::setStylusOperation( connectionsView->viewport(), QPEApplication::RightOnHold);
//Load all icons needed
m_offPix = Resource::loadPixmap( "opietooth/notconnected" );
@@ -103,20 +99,18 @@ BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl )
setCaption( tr( "Bluetooth Manager" ) );
readConfig();
initGui();
devicesView->setRootIsDecorated(true);
-
-
+ m_iconLoader = new BTIconLoader();
writeToHciConfig();
- // search conncetions
addConnectedDevices();
- addSignalStrength();
- m_iconLoader = new BTIconLoader();
readSavedDevices();
+ addServicesToDevices();
+ QTimer::singleShot( 3000, this, SLOT( addServicesToDevices() ) );
}
/**
* Reads all options from the config file
*/
void BlueBase::readConfig()
@@ -168,13 +162,13 @@ void BlueBase::writeToHciConfig()
hciconf.setIscan( m_enableInquiryscan );
hciconf.save();
}
/**
- * Read the list of allready known devices
+ * Read the list of already known devices
*/
void BlueBase::readSavedDevices()
{
QValueList<RemoteDevice> loadedDevices;
DeviceHandler handler;
@@ -182,13 +176,13 @@ void BlueBase::readSavedDevices()
addSearchedDevices( loadedDevices );
}
/**
- * Write the list of allready known devices
+ * Write the list of already known devices
*/
void BlueBase::writeSavedDevices()
{
QListViewItemIterator it( devicesView );
BTListItem* item;
BTDeviceItem* device;
@@ -292,15 +286,12 @@ void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices )
deviceItem = new BTDeviceItem( devicesView , (*it) );
deviceItem->setPixmap( 1, m_findPix );
deviceItem->setExpandable ( true );
// look if device is avail. atm, async
deviceActive( (*it) );
-
- // ggf auch hier?
- addServicesToDevice( deviceItem );
}
}
/**
* Action that is toggled on entrys on click
@@ -395,36 +386,45 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin
delete popup;
}
delete menu;
}
+void BlueBase::addServicesToDevices()
+{
+ odebug << "BlueBase::addServicesToDevices()" << oendl;
+ BTDeviceItem* item = (BTDeviceItem*) devicesView->firstChild();
+ while ( item )
+ {
+ addServicesToDevice( item );
+ item = (BTDeviceItem*) static_cast<QListViewItem*>( item )->nextSibling();
+ }
+}
+
/**
* Search and display avail. services for a device (on expand from device listing)
* @param item the service item returned
*/
void BlueBase::addServicesToDevice( BTDeviceItem * item )
{
- odebug << "addServicesToDevice" << oendl;
+ odebug << "BlueBase::addServicesToDevice" << oendl;
// row of mac adress text(3)
RemoteDevice device = item->remoteDevice();
m_deviceList.insert( item->mac() , item );
// and some time later I get a signal foundServices( const QString& device, Services::ValueList ); back
m_localDevice->searchServices( device );
}
/**
- * Overloaded. This one it the one that is
- ted 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 )
{
- odebug << "fill services list" << oendl;
+ odebug << "BlueBase::fill services list" << oendl;
QMap<QString,BTDeviceItem*>::Iterator it;
BTDeviceItem* deviceItem = 0;
// get the right devices which requested the search
it = m_deviceList.find( device );
@@ -473,16 +473,12 @@ void BlueBase::addServicesToDevice( const QString& device, Services::ValueList s
serviceItem = new BTServiceItem( deviceItem, s1 );
}
// now remove them from the list
m_deviceList.remove( it );
}
-
-
-
-
void BlueBase::addSignalStrength()
{
QListViewItemIterator it( connectionsView );
for ( ; it.current(); ++it )
{
@@ -509,12 +505,13 @@ void BlueBase::addSignalStrength( const QString& mac, const QString& strength )
* Add the existing connections (pairs) to the connections tab.
* This one triggers the search
*/
void BlueBase::addConnectedDevices()
{
m_localDevice->searchConnections();
+ QTimer::singleShot( 5000, this, SLOT( addSignalStrength() ) );
}
/**
* This adds the found connections to the connection tab.
* @param connectionList the ValueList with all current connections
*/
@@ -612,13 +609,12 @@ void BlueBase::deviceActive( const QString& device, bool connected )
it = m_deviceList.find( device );
if( it == m_deviceList.end() )
return;
BTDeviceItem* deviceItem = it.data();
-
if ( connected )
{
deviceItem->setPixmap( 1, m_onPix );
}
else
{