-rw-r--r-- | noncore/net/opietooth/manager/rfcpopup.cpp | 44 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/rfcpopup.h | 7 |
2 files changed, 34 insertions, 17 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 @@ -5,8 +5,10 @@ /* OPIE */ #include <qpe/qpeapplication.h> #include <opie2/odebug.h> +#include <opie2/oprocess.h> + using namespace Opie::Core; /* QT */ #include <qtimer.h> @@ -15,33 +17,44 @@ 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() ) ); - - + 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"); @@ -73,16 +86,19 @@ 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() 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 @@ -2,9 +2,9 @@ #define RFCPOPUP_H #include <qpopupmenu.h> #include <qaction.h> - +#include <services.h> #include "btdeviceitem.h" namespace OpieTooth { /** @@ -17,18 +17,19 @@ namespace OpieTooth { */ 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; + Services m_service; + int procId; //Connection process number private slots: void slotConnect(); void slotDisconnect(); void slotBind(); |