-rw-r--r-- | noncore/net/opietooth/manager/rfcpopup.cpp | 56 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/rfcpopup.h | 9 |
2 files changed, 41 insertions, 24 deletions
diff --git a/noncore/net/opietooth/manager/rfcpopup.cpp b/noncore/net/opietooth/manager/rfcpopup.cpp index 54f1eb7..7711f0a 100644 --- a/noncore/net/opietooth/manager/rfcpopup.cpp +++ b/noncore/net/opietooth/manager/rfcpopup.cpp @@ -1,105 +1,121 @@ #include "pppdialog.h" #include "rfcpopup.h" #include "rfcommassigndialogimpl.h" /* OPIE */ #include <qpe/qpeapplication.h> #include <opie2/odebug.h> +#include <opie2/oprocess.h> + using namespace Opie::Core; /* QT */ #include <qtimer.h> using namespace OpieTooth; /* * c'tor init the QAction */ -RfcCommPopup::RfcCommPopup( OpieTooth::BTDeviceItem* item ) - : QPopupMenu() +RfcCommPopup::RfcCommPopup(const OpieTooth::Services& service, + OpieTooth::BTDeviceItem* item) + : QPopupMenu(), m_service(service) { owarn << "RfcCommPopup c'tor" << oendl; QAction* a; + int port = service.protocolDescriptorList().last().port(); + QString mac = item->mac(); + unsigned int i; - + procId = -1; m_item = item; - /* connect action */ - a = new QAction( ); // so it's get deleted - a->setText("Connect"); - a->addTo( this ); - connect( a, SIGNAL( activated() ), - this, SLOT( slotConnect() ) ); - - - /* disconnect action */ - a = new QAction( ); - a->setText("Disconnect"); - a->addTo( this ); - connect( a, SIGNAL( activated() ) , - this, SLOT( slotDisconnect() ) ); - + for (i = 0; i < sizeof(PPPDialog::conns) / sizeof(Connection); i++) { + if (PPPDialog::conns[i].port == port && + PPPDialog::conns[i].btAddr == mac && + PPPDialog::conns[i].proc.isRunning()) { + /* disconnect action */ + a = new QAction( ); + a->setText("Disconnect"); + a->addTo( this ); + connect( a, SIGNAL( activated() ) , + this, SLOT( slotDisconnect() ) ); + procId = i; + break; + } + } + if (procId == -1) { + /* connect action */ + a = new QAction( ); // so it's get deleted + a->setText("Connect"); + a->addTo( this ); + connect( a, SIGNAL( activated() ), + this, SLOT( slotConnect() ) ); + } /* foo action */ a = new QAction( ); a->setText("Bind table"); a->addTo( this ); connect( a, SIGNAL( activated() ), this, SLOT( slotBind() ) ); /* bar action */ a = new QAction( ); a->setText( "Bar" ); a->addTo( this ); connect( a, SIGNAL( activated() ), this, SLOT( slotBar() ) ); }; RfcCommPopup::~RfcCommPopup() { /* delete m_con; delete m_dis; delete m_foo; delete m_bar; */ } void RfcCommPopup::slotConnect() { owarn << "connect" << oendl; - PPPDialog pppDialog; + PPPDialog pppDialog(m_item->mac(), + m_service.protocolDescriptorList().last().port()); QPEApplication::execDialog( &pppDialog ); } void RfcCommPopup::slotDisconnect() { - owarn << "slot disconnected" << oendl; + owarn << "slot disconnected " << procId << oendl; + if (procId >= 0) + PPPDialog::conns[procId].proc.kill(); } void RfcCommPopup::slotBind() { RfcommAssignDialog rfcommAssign ( this, "RfcommAssignDialog", true, WStyle_ContextHelp ); rfcommAssign.newDevice( m_item->mac() ); if ( QPEApplication::execDialog( &rfcommAssign ) == QDialog::Accepted ) { rfcommAssign.saveConfig(); } } void RfcCommPopup::slotBar() { owarn << "slotBar" << oendl; }; diff --git a/noncore/net/opietooth/manager/rfcpopup.h b/noncore/net/opietooth/manager/rfcpopup.h index 74b9117..a67e41e 100644 --- a/noncore/net/opietooth/manager/rfcpopup.h +++ b/noncore/net/opietooth/manager/rfcpopup.h @@ -1,39 +1,40 @@ #ifndef RFCPOPUP_H #define RFCPOPUP_H #include <qpopupmenu.h> #include <qaction.h> - +#include <services.h> #include "btdeviceitem.h" namespace OpieTooth { /** * A simple reference implementation for * the popup helper factory. * This class derives from QPopupMenu and uses * plugged QActions to do all the nasty in it's * slots. After the work is done everything must * be deleted. */ class RfcCommPopup : public QPopupMenu { Q_OBJECT public: - RfcCommPopup( OpieTooth::BTDeviceItem* ); + RfcCommPopup(const OpieTooth::Services&, OpieTooth::BTDeviceItem*); ~RfcCommPopup(); - private: QAction* m_con; QAction* m_dis; QAction* m_bind; QAction* m_bar; - OpieTooth::BTDeviceItem *m_item; + OpieTooth::BTDeviceItem *m_item; + Services m_service; + int procId; //Connection process number private slots: void slotConnect(); void slotDisconnect(); void slotBind(); void slotBar(); }; }; #endif |