author | zecke <zecke> | 2002-07-12 17:14:58 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-07-12 17:14:58 (UTC) |
commit | 89dce758480cc90502ad14b6c4cf80774e6c1845 (patch) (side-by-side diff) | |
tree | 2ff4e635c8aa86385dfd896084f5cd419efd0840 | |
parent | 716211b5e06bb25145cfbcf62a11a7c52c79dde5 (diff) | |
download | opie-89dce758480cc90502ad14b6c4cf80774e6c1845.zip opie-89dce758480cc90502ad14b6c4cf80774e6c1845.tar.gz opie-89dce758480cc90502ad14b6c4cf80774e6c1845.tar.bz2 |
- Connection -> ConnectionState
- Factory adjustments
- Factory function
- Refactoring the QListViewItem derived class
BTListItem
|
- BTDeviceItem for RemoteDevices
|
- BTServiceItem for Services
|
- BTConnectionItem for ConnectionState
- misc bug fixes
-rw-r--r-- | noncore/net/opietooth/lib/connection.cpp | 32 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/connection.h | 16 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.cc | 10 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.h | 4 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/bluebase.cpp | 84 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/bluebase.h | 11 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/btlistitem.cpp | 60 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/btlistitem.h | 21 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/manager.pro | 4 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/popuphelper.cpp | 9 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/popuphelper.h | 6 |
11 files changed, 109 insertions, 148 deletions
diff --git a/noncore/net/opietooth/lib/connection.cpp b/noncore/net/opietooth/lib/connection.cpp index 1f9baaf..ef7d925 100644 --- a/noncore/net/opietooth/lib/connection.cpp +++ b/noncore/net/opietooth/lib/connection.cpp @@ -1,24 +1,24 @@ #include "connection.h" using namespace OpieTooth; -Connection::Connection() { +ConnectionState::ConnectionState() { m_direction = Incoming; m_handle = -1; m_state = -1; m_linkMode = -1; }; -Connection::Connection( const Connection& con1 ) { +ConnectionState::ConnectionState( const ConnectionState& con1 ) { (*this) = con1; } -Connection::Connection( bool in, +ConnectionState::ConnectionState( bool in, const QString& conType, const QString& mac, int handle, int state, int linkMode ) { m_direction = in; @@ -27,61 +27,61 @@ Connection::Connection( bool in, m_handle = handle; m_state = state; m_linkMode = linkMode; } -void Connection::setDirection( bool incoming ) { +void ConnectionState::setDirection( bool incoming ) { m_direction = incoming; } -bool Connection::direction() const { +bool ConnectionState::direction() const { return m_direction; } -void Connection::setConnectionMode( const QString& conType ) { +void ConnectionState::setConnectionMode( const QString& conType ) { m_contype = conType; } -QString Connection::connectionMode() const { +QString ConnectionState::connectionMode() const { return m_contype; } -void Connection::setMac( const QString& mac ) { +void ConnectionState::setMac( const QString& mac ) { m_mac = mac; } -QString Connection::mac() const{ +QString ConnectionState::mac() const{ return m_mac; } -void Connection::setHandle( int handle ) { +void ConnectionState::setHandle( int handle ) { m_handle = handle; } -int Connection::handle() const{ +int ConnectionState::handle() const{ return m_handle; } -void Connection::setState( int state ) { +void ConnectionState::setState( int state ) { m_state = state; } -int Connection::state()const { +int ConnectionState::state()const { return m_state; } -void Connection::setLinkMode( int linkMode ) { +void ConnectionState::setLinkMode( int linkMode ) { m_linkMode = linkMode; } -int Connection::linkMode()const{ +int ConnectionState::linkMode()const{ return m_linkMode; } -Connection &Connection::operator=( const Connection& con1 ) { +ConnectionState &ConnectionState::operator=( const ConnectionState& con1 ) { m_direction = con1.m_direction; m_contype = con1.m_contype; m_mac = con1.m_mac; m_handle = con1.m_handle; m_state = con1.m_state; m_linkMode = con1.m_linkMode; diff --git a/noncore/net/opietooth/lib/connection.h b/noncore/net/opietooth/lib/connection.h index 37090ce..76e5dad 100644 --- a/noncore/net/opietooth/lib/connection.h +++ b/noncore/net/opietooth/lib/connection.h @@ -14,24 +14,24 @@ namespace OpieTooth { /** * The Connection class stores * the output of hcitool con * in a OO way */ - class Connection { + class ConnectionState { public: /** * typedef for a list of * Connections */ - typedef QValueList<Connection> ValueList; + typedef QValueList<ConnectionState> ValueList; /** * Copy c'tor. */ - Connection( const Connection& ); + ConnectionState( const ConnectionState& ); /** * Main c'tor * Basicly it holds all values * a blueZ connections can have * @param in If the connection is either incoming or outgoing @@ -41,24 +41,24 @@ namespace OpieTooth { * @param state the State of the connection * @param linkMode the linkmode of the connection MASTER or not * * < ACL 00:02:C7:09:2B:53 handle 1 state 1 lm MASTER * */ - Connection( bool in, + ConnectionState( bool in, const QString& conType, const QString& mac, int handle, int state, int linkMode ); /** * C'tor for compability with QValueList * QValueList needs this c'tor. */ - Connection(); + ConnectionState(); /** * Set if the connection is incoming or * outgoing * @param in Whether or not the connection is ingoing or not. * for param use either Incoming or Outgoing @@ -128,17 +128,17 @@ namespace OpieTooth { */ int linkMode()const; /** * copy c'tor */ - Connection &operator=( const Connection& ); + ConnectionState &operator=( const ConnectionState& ); private: - class ConnectionPrivate; - ConnectionPrivate *d; + class ConnectionStatePrivate; + ConnectionStatePrivate *d; bool m_direction : 1; QString m_contype; QString m_mac; int m_handle; int m_state; int m_linkMode; diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc index e07f9da..1281116 100644 --- a/noncore/net/opietooth/lib/manager.cc +++ b/noncore/net/opietooth/lib/manager.cc @@ -251,30 +251,30 @@ void Manager::searchConnections() { connect(proc, SIGNAL(receivedStdout(OProcess*, char*, int) ), this, SLOT(slotConnectionOutput(OProcess*, char*, int) ) ); *proc << "hcitool"; *proc << "con"; if (!proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { - Connection::ValueList list; + ConnectionState::ValueList list; emit connections( list ); delete proc; } } void Manager::slotConnectionExited( OProcess* /*proc*/ ) { qWarning("exited"); - Connection::ValueList list; + ConnectionState::ValueList list; list = parseConnections( m_hcitoolCon ); emit connections(list ); } void Manager::slotConnectionOutput(OProcess* proc, char* cha, int len) { QCString str(cha, len ); m_hcitoolCon.append( str ); delete proc; } -Connection::ValueList Manager::parseConnections( const QString& out ) { - Connection::ValueList list2; +ConnectionState::ValueList Manager::parseConnections( const QString& out ) { + ConnectionState::ValueList list2; QStringList list = QStringList::split('\n', out ); QStringList::Iterator it; for (it = list.begin(); it != list.end(); ++it ) { QString row = (*it).stripWhiteSpace(); QStringList value = QStringList::split(' ', row ); qWarning("0: %s", value[0].latin1() ); @@ -283,13 +283,13 @@ Connection::ValueList Manager::parseConnections( const QString& out ) { qWarning("3: %s", value[3].latin1() ); qWarning("4: %s", value[4].latin1() ); qWarning("5: %s", value[5].latin1() ); qWarning("6: %s", value[6].latin1() ); qWarning("7: %s", value[7].latin1() ); qWarning("8: %s", value[8].latin1() ); - Connection con; + ConnectionState con; con.setDirection( value[0] == QString::fromLatin1("<") ? Outgoing : Incoming ); con.setConnectionMode( value[1] ); con.setMac( value[2] ); con.setHandle( value[4].toInt() ); con.setState( value[6].toInt() ); con.setLinkMode( value[8] == QString::fromLatin1("MASTER") ? Master : Client ); diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h index b32327c..0ebe1b3 100644 --- a/noncore/net/opietooth/lib/manager.h +++ b/noncore/net/opietooth/lib/manager.h @@ -134,13 +134,13 @@ namespace OpieTooth { // the first device is the device which you access void available( const QString& device, bool connected ); void addedService( const QString& service, bool added ); void removedService( const QString& service, bool removed ); void foundServices( const QString& device, Services::ValueList ); void foundDevices( const QString& device, RemoteDevice::ValueList ); - void connections( Connection::ValueList ); + void connections( ConnectionState::ValueList ); private slots: void slotProcessExited(OProcess* ); void slotSDPExited(OProcess*); void slotSDPOut(OProcess*, char*, int); @@ -150,13 +150,13 @@ private slots: void slotConnectionExited(OProcess* ); void slotConnectionOutput(OProcess*, char*, int ); private: Services::ValueList parseSDPOutput( const QString& ); RemoteDevice::ValueList parseHCIOutput( const QString& ); - Connection::ValueList parseConnections( const QString& ); + ConnectionState::ValueList parseConnections( const QString& ); OProcess *m_hcitool; OProcess *m_sdp; // not only one QString m_device; QMap<QString, QString> m_out; QMap<QString, QString> m_devices; QString m_hcitoolCon; diff --git a/noncore/net/opietooth/manager/bluebase.cpp b/noncore/net/opietooth/manager/bluebase.cpp index 85c6717..9cfeaa2 100644 --- a/noncore/net/opietooth/manager/bluebase.cpp +++ b/noncore/net/opietooth/manager/bluebase.cpp @@ -41,12 +41,14 @@ #include <qpe/resource.h> #include <qpe/config.h> #include <remotedevice.h> #include <services.h> +#include "btconnectionitem.h" + using namespace OpieTooth; BlueBase::BlueBase( QWidget* parent, const char* name, WFlags fl ) : BluetoothBase( parent, name, fl ) { m_localDevice = new Manager( "hci0" ); @@ -84,16 +86,19 @@ using namespace OpieTooth; readConfig(); initGui(); //TESTING ListView2->setRootIsDecorated(true); - BTListItem *topLV2 = new BTListItem( ListView2, "Siemens S45", "", "device" ); + BTDeviceItem *topLV2 = new BTDeviceItem( ListView2, RemoteDevice("xx:", "Siemens S45" ) ); topLV2->setPixmap( 1, m_onPix ); - (void) new BTListItem( topLV2, "Serial" ,"", "service" ); - (void) new BTListItem( topLV2, "BlueNiC" , "", "service" ); + Services s1; + s1.setServiceName( "Serial" ); + (void) new BTServiceItem( topLV2, s1 ); + s1.setServiceName( "BlueNic" ); + (void) new BTServiceItem( topLV2, s1 ); writeToHciConfig(); // search conncetions addConnectedDevices(); m_iconLoader = new BTIconLoader(); } @@ -181,19 +186,25 @@ using namespace OpieTooth; /** * Write the list of allready known devices * */ void BlueBase::writeSavedDevices() { QListViewItemIterator it( ListView2 ); + BTListItem* item; + BTDeviceItem* device; for ( ; it.current(); ++it ) { + item = (BTListItem*)it.current(); + if(item->typeId() != BTListItem::Device ) + continue; + device = (BTDeviceItem*)item; // seperate config file for each device, to store more information in future. - qDebug( "/Settings/bluetooth/" + (((BTListItem*)it.current())->mac()) + ".conf"); - Config conf( QDir::homeDirPath() + "/Settings/bluetooth/" + (((BTListItem*)it.current())->mac()) + ".conf", Config::File ); + qDebug( "/Settings/bluetooth/" + device->mac() + ".conf"); + Config conf( QDir::homeDirPath() + "/Settings/bluetooth/" + device->mac() + ".conf", Config::File ); conf.setGroup( "Info" ); - conf.writeEntry( "name", ((BTListItem*)it.current())->name() ); + conf.writeEntry( "name", device->name() ); } } /** * Set up the gui @@ -242,17 +253,18 @@ using namespace OpieTooth; /** * Add fresh found devices from scan dialog to the listing * */ void BlueBase::addSearchedDevices( const QValueList<RemoteDevice> &newDevices ) { - BTListItem * deviceItem; + BTDeviceItem * deviceItem; QValueList<RemoteDevice>::ConstIterator it; for( it = newDevices.begin(); it != newDevices.end() ; ++it ) { - deviceItem = new BTListItem( ListView2 , (*it).name(), (*it).mac(), "device" ); + + deviceItem = new BTDeviceItem( ListView2 , (*it) ); deviceItem->setExpandable ( true ); // look if device is avail. atm, async deviceActive( (*it) ); // ggf auch hier? @@ -323,16 +335,16 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin } /** * Search and display avail. services for a device (on expand from device listing) * */ - void BlueBase::addServicesToDevice( BTListItem * item ) { + void BlueBase::addServicesToDevice( BTDeviceItem * item ) { qDebug("addServicesToDevice"); // row of mac adress text(3) - RemoteDevice device( item->mac(), item->name() ); + 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 ); } @@ -341,94 +353,100 @@ void BlueBase::startServiceActionHold( QListViewItem * item, const QPoint & poin * @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 = 0; + QMap<QString,BTDeviceItem*>::Iterator it; + BTDeviceItem* deviceItem = 0; // get the right devices which requested the search - for( it = m_deviceList.begin(); it != m_deviceList.end(); ++it ) { - if ( it.key() == device ) { - deviceItem = it.data(); - } - } + it = m_deviceList.find( device ); + if( it == m_deviceList.end() ) + return; + deviceItem = it.data(); QValueList<OpieTooth::Services>::Iterator it2; - BTListItem * serviceItem; + BTServiceItem * serviceItem; if (!servicesList.isEmpty() ) { // add services for( it2 = servicesList.begin(); it2 != servicesList.end(); ++it2 ) { - serviceItem = new BTListItem( deviceItem , (*it2).serviceName() , "" , "service" ); + serviceItem = new BTServiceItem( deviceItem , (*it2) ); serviceItem->setPixmap( 0, m_iconLoader->serviceIcon( (*it2).classIdList() ) ); } } else { - serviceItem = new BTListItem( deviceItem , tr("no services found"), "" , "service" ); + Services s1; + s1.setServiceName( tr("no serives found") ); + serviceItem = new BTServiceItem( deviceItem, s1 ); } + // now remove them from the list + m_deviceList.remove( it ); } /** * Add the existing connections (pairs) to the connections tab. * This one triggers the search */ void BlueBase::addConnectedDevices() { m_localDevice->searchConnections(); } - void BlueBase::addConnectedDevices( Connection::ValueList connectionList ) { - QValueList<OpieTooth::Connection>::Iterator it; - BTListItem * connectionItem; + void BlueBase::addConnectedDevices( ConnectionState::ValueList connectionList ) { + QValueList<OpieTooth::ConnectionState>::Iterator it; + BTConnectionItem * connectionItem; if ( !connectionList.isEmpty() ) { for (it = connectionList.begin(); it != connectionList.end(); ++it) { - connectionItem = new BTListItem( ListView4 , (*it).mac() , (*it).mac() , "connection" ); + connectionItem = new BTConnectionItem( ListView4 , (*it) ); } } else { - connectionItem = new BTListItem( ListView4 , tr("No connections found"), "", "connection" ); + ConnectionState con; + con.setMac( tr("No connections found") ); + connectionItem = new BTConnectionItem( ListView4 , con ); } // recall connection search after some time QTimer::singleShot( 20000, this, SLOT( addConnectedDevices() ) ); } /** * Find out if a device can currently be reached */ void BlueBase::deviceActive( const RemoteDevice &device ) { // search by mac, async, gets a signal back + // We should have a BTDeviceItem there or where does it get added to the map -zecke m_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 = 0; + QMap<QString,BTDeviceItem*>::Iterator it; + + it = m_deviceList.find( device ); + if( it == m_deviceList.end() ) + return; + + BTDeviceItem* deviceItem = it.data(); - // get the right devices which requested the search - for( it = m_deviceList.begin(); it != m_deviceList.end(); ++it ) { - if ( it.key() == device ) { - deviceItem = it.data(); - } - } if ( connected ) { deviceItem->setPixmap( 1, m_onPix ); } else { deviceItem->setPixmap( 1, m_offPix ); } + m_deviceList.remove( it ); } /** * Open the "scan for devices" dialog */ void BlueBase::startScan() { diff --git a/noncore/net/opietooth/manager/bluebase.h b/noncore/net/opietooth/manager/bluebase.h index 73fac97..a8f4fe4 100644 --- a/noncore/net/opietooth/manager/bluebase.h +++ b/noncore/net/opietooth/manager/bluebase.h @@ -7,13 +7,16 @@ #include <qscrollview.h> #include <qsplitter.h> #include <qlist.h> #include <qpixmap.h> #include "bluetoothbase.h" -#include "btlistitem.h" + +#include "btserviceitem.h" +#include "btdeviceitem.h" + #include "bticonloader.h" #include <remotedevice.h> #include <manager.h> class QVBox; @@ -48,13 +51,13 @@ namespace OpieTooth { void writeSavedDevices(); void writeToHciConfig(); QString status()const; void initGui(); void setInfo(); Manager *m_localDevice; - QMap<QString,BTListItem*> m_deviceList; + QMap<QString,BTDeviceItem*> m_deviceList; void deviceActive( const RemoteDevice &device ); QString m_deviceName; QString m_defaultPasskey; bool m_useEncryption; @@ -66,16 +69,16 @@ namespace OpieTooth { QPixmap m_onPix; BTIconLoader *m_iconLoader; private slots: void addSearchedDevices( const QValueList<RemoteDevice> &newDevices ); - void addServicesToDevice( BTListItem *item ); + void addServicesToDevice( BTDeviceItem *item ); void addServicesToDevice( const QString& device, Services::ValueList ); void addConnectedDevices(); - void addConnectedDevices( Connection::ValueList ); + void addConnectedDevices( ConnectionState::ValueList ); void startServiceActionClicked( QListViewItem *item ); void startServiceActionHold( QListViewItem *, const QPoint &, int ); void deviceActive( const QString& mac, bool connected ); void applyConfigChanges(); }; diff --git a/noncore/net/opietooth/manager/btlistitem.cpp b/noncore/net/opietooth/manager/btlistitem.cpp index 82e7c00..36816f8 100644 --- a/noncore/net/opietooth/manager/btlistitem.cpp +++ b/noncore/net/opietooth/manager/btlistitem.cpp @@ -1,61 +1,11 @@ #include "btlistitem.h" -namespace OpieTooth { +using namespace OpieTooth; - BTListItem::BTListItem( QListView * parent ) : QListViewItem( parent ) { - } +BTListItem::BTListItem( QListView * parent ) : QListViewItem( parent ) { +} - BTListItem::BTListItem( QListViewItem * parent ) : QListViewItem( parent ) { - } - - - // name, and then mac and then servicetype - BTListItem::BTListItem( QListView * parent, const QString &name , const QString& mac, const QString& type ) - : QListViewItem( parent, name ){ - - m_name = name; - m_mac = mac; - m_type = type; - - } - - BTListItem::BTListItem( QListViewItem * parent , const QString& name, const QString& mac, const QString& type ) - : QListViewItem( parent, name ){ - - m_name = name; - m_mac = mac; - m_type = type; - } - - - void BTListItem::setMac( const QString& mac ) { - m_mac = mac; - } - - QString BTListItem::mac() const { - return m_mac; - } - - void BTListItem::setName( const QString& name ) { - m_name = name; - } - - QString BTListItem::name() const { - return m_name; - } - - void BTListItem::setType( const QString& type ) { - m_type = type; - } - - QString BTListItem::type() const { - return m_type; - } - - - BTListItem::~BTListItem() { - } - -}; +BTListItem::BTListItem( QListViewItem * parent ) : QListViewItem( parent ) { +} diff --git a/noncore/net/opietooth/manager/btlistitem.h b/noncore/net/opietooth/manager/btlistitem.h index d7ce03b..6b529d1 100644 --- a/noncore/net/opietooth/manager/btlistitem.h +++ b/noncore/net/opietooth/manager/btlistitem.h @@ -3,31 +3,16 @@ #include <qlistview.h> namespace OpieTooth { class BTListItem : public QListViewItem { - public: + enum Types { Device =0, Service, Connection }; BTListItem( QListView * parent ); BTListItem( QListViewItem * parent ); - - // name, and then mac and then servicetype - BTListItem( QListView * , const QString&, const QString&, const QString& ); - BTListItem( QListViewItem * parent , const QString&, const QString& , const QString& ); - ~BTListItem(); - - void setMac( const QString& ); - QString mac()const; - void setName( const QString& ); - QString name()const; - void setType( const QString& ); - QString type()const; - private: - QString m_name; - QString m_mac; - QString m_type; - + virtual QString type() const = 0; + virtual int typeId() const = 0; }; }; #endif diff --git a/noncore/net/opietooth/manager/manager.pro b/noncore/net/opietooth/manager/manager.pro index 4f0ea60..d36b8df2 100644 --- a/noncore/net/opietooth/manager/manager.pro +++ b/noncore/net/opietooth/manager/manager.pro @@ -1,11 +1,11 @@ TEMPLATE = app CONFIG = qt warn_on debug #CONFIG = qt warn_on release -HEADERS = popuphelper.h bluebase.h scandialog.h btlistitem.h hciconfwrapper.h bticonloader.h -SOURCES = popuphelper.cpp main.cpp bluebase.cpp scandialog.cpp btlistitem.cpp hciconfwrapper.cpp bticonloader.cpp +HEADERS = btconnectionitem.h btdeviceitem.h btserviceitem.h stdpopups.h popuphelper.h bluebase.h scandialog.h btlistitem.h hciconfwrapper.h bticonloader.h +SOURCES = btconnectionitem.cpp btdeviceitem.cpp btserviceitem.h stdpopups.cpp popuphelper.cpp main.cpp bluebase.cpp scandialog.cpp btlistitem.cpp hciconfwrapper.cpp bticonloader.cpp INCLUDEPATH += $(OPIEDIR)/include INCLUDEPATH += $(OPIEDIR)/noncore/net/opietooth/lib DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopietooth -lopie INTERFACES = bluetoothbase.ui devicedialog.ui DESTDIR = $(OPIEDIR)/bin diff --git a/noncore/net/opietooth/manager/popuphelper.cpp b/noncore/net/opietooth/manager/popuphelper.cpp index 2a6dad0..d8404d6 100644 --- a/noncore/net/opietooth/manager/popuphelper.cpp +++ b/noncore/net/opietooth/manager/popuphelper.cpp @@ -1,7 +1,9 @@ +#include "stdpopups.h" + #include "popuphelper.h" using namespace OpieTooth; PopupHelper::PopupHelper() { init(); @@ -9,17 +11,18 @@ PopupHelper::PopupHelper() { PopupHelper::~PopupHelper() { } void PopupHelper::insert( int id, popupFactory fact ) { m_map.insert(id, fact ); } -QPopupMenu* PopupHelper::find( int id ) { +QPopupMenu* PopupHelper::find( int id, const Services& ser, QListViewItem* item ) { FactoryMap::Iterator it = m_map.find(id ); if ( it != m_map.end() ) { popupFactory fact = it.data(); - return (*fact)(); + return (*fact)(ser, item); } return 0l; } void PopupHelper::init() { - + insert( 1, newRfcComPopup ); + insert(2, newObexPushPopup ); } diff --git a/noncore/net/opietooth/manager/popuphelper.h b/noncore/net/opietooth/manager/popuphelper.h index 7485f71..7541ac5 100644 --- a/noncore/net/opietooth/manager/popuphelper.h +++ b/noncore/net/opietooth/manager/popuphelper.h @@ -1,23 +1,25 @@ #ifndef OPIE_TOOTH_POPUP_HELPER #define OPIE_TOOTH_POPUP_HELPER +#include <qlistview.h> #include <qpopupmenu.h> #include <qmap.h> +#include <services.h> namespace OpieTooth { - typedef QPopupMenu* (*popupFactory)(void); + typedef QPopupMenu* (*popupFactory)(const Services&, QListViewItem*); typedef QMap<int, popupFactory> FactoryMap; class PopupHelper { public: PopupHelper(); ~PopupHelper(); void insert( int id, popupFactory fact ); - QPopupMenu* find( int id ); + QPopupMenu* find( int id, const Services&, QListViewItem* ); private: void init(); FactoryMap m_map; }; }; |