summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/startpanconnection.cpp14
-rw-r--r--noncore/net/opietooth/manager/panpopup.cpp1
2 files changed, 15 insertions, 0 deletions
diff --git a/noncore/net/opietooth/lib/startpanconnection.cpp b/noncore/net/opietooth/lib/startpanconnection.cpp
index e7deede..6e0ab7e 100644
--- a/noncore/net/opietooth/lib/startpanconnection.cpp
+++ b/noncore/net/opietooth/lib/startpanconnection.cpp
@@ -1,68 +1,82 @@
#include "startpanconnection.h"
using namespace OpieTooth;
StartPanConnection::StartPanConnection() {
m_panConnect = 0l;
setConnectionType();
}
StartPanConnection::~StartPanConnection() {
delete m_panConnect;
}
StartPanConnection::StartPanConnection( QString mac ) {
m_panConnect = 0l;
m_mac = mac;
setConnectionType();
}
void StartPanConnection::setName( QString name ) {
m_name = name;
}
QString StartPanConnection::name() {
return m_name;
}
void StartPanConnection::setConnectionType() {
m_connectionType = Pan;
}
StartConnection::ConnectionType StartPanConnection::type() {
return m_connectionType;
}
void StartPanConnection::start() {
m_panConnect = new OProcess();
qDebug( "IM START " + m_mac );
*m_panConnect << "pand" << "--connect" << m_mac;
connect( m_panConnect, SIGNAL( processExited( OProcess* ) ) ,
this, SLOT( slotExited( OProcess* ) ) );
connect( m_panConnect, SIGNAL( receivedStdout( OProcess*, char*, int ) ),
this, SLOT( slotStdOut( OProcess*, char*, int ) ) );
if (!m_panConnect->start( OProcess::NotifyOnExit, OProcess::AllOutput) ) {
qWarning( "could not start" );
delete m_panConnect;
}
}
void StartPanConnection::slotExited( OProcess* proc ) {
delete m_panConnect;
+ m_panConnect = 0l;
}
void StartPanConnection::slotStdOut(OProcess* proc, char* chars, int len)
{}
void StartPanConnection::stop() {
if ( m_panConnect ) {
delete m_panConnect;
m_panConnect = 0l;
}
+ m_panConnect = new OProcess();
+ qDebug("IM STOP " + m_mac);
+
+ *m_panConnect << "pand" << "--kill" << m_mac;
+
+ connect( m_panConnect, SIGNAL( processExited( OProcess* ) ) ,
+ this, SLOT( slotExited( OProcess* ) ) );
+ connect( m_panConnect, SIGNAL( receivedStdout( OProcess*, char*, int ) ),
+ this, SLOT( slotStdOut( OProcess*, char*, int ) ) );
+ if (!m_panConnect->start( OProcess::NotifyOnExit, OProcess::AllOutput) ) {
+ qWarning( "could not stop" );
+ delete m_panConnect;
+ }
}
diff --git a/noncore/net/opietooth/manager/panpopup.cpp b/noncore/net/opietooth/manager/panpopup.cpp
index 695f349..8b05964 100644
--- a/noncore/net/opietooth/manager/panpopup.cpp
+++ b/noncore/net/opietooth/manager/panpopup.cpp
@@ -1,63 +1,64 @@
#include <qpe/qcopenvelope_qws.h>
#include <qtimer.h>
#include "panpopup.h"
using namespace OpieTooth;
/*
* c'tor init the QAction
*/
PanPopup::PanPopup( OpieTooth::BTDeviceItem* item ) : QPopupMenu() {
qWarning("PanPopup c'tor");
m_item = item;
QAction *a, *b, *c;
m_panconnection = 0l;
/* connect action */
a = new QAction(); // so it's get deleted
a->setText( tr("connect") );
a->addTo( this );
connect( a, SIGNAL( activated() ), this, SLOT( slotConnect() ) );
b = new QAction();
b->setText( tr( "connect+conf" ) );
b->addTo( this );
connect( b, SIGNAL( activated() ), this, SLOT( slotConnectAndConfig() ) );
c = new QAction();
c->setText( tr( "disconnect" ) );
c->addTo( this );
connect( c, SIGNAL( activated() ), this, SLOT( slotDisconnect() ) );
};
PanPopup::~PanPopup() {
}
void PanPopup::slotConnect() {
m_panconnection = new StartPanConnection( m_item->mac() );
m_panconnection->start();
}
void PanPopup::slotDisconnect() {
+ if (!m_panconnection) m_panconnection = new StartPanConnection( m_item->mac() );
m_panconnection->stop();
}
void PanPopup::slotConnectAndConfig() {
slotConnect();
// more intelligence here later like passing the device ( bnepX )
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << QString( "networksettings" );
}