summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/pppdialog.cpp64
-rw-r--r--noncore/net/opietooth/manager/pppdialog.h2
2 files changed, 42 insertions, 24 deletions
diff --git a/noncore/net/opietooth/manager/pppdialog.cpp b/noncore/net/opietooth/manager/pppdialog.cpp
index b8d800a..11091c4 100644
--- a/noncore/net/opietooth/manager/pppdialog.cpp
+++ b/noncore/net/opietooth/manager/pppdialog.cpp
@@ -1,29 +1,31 @@
#include "pppdialog.h"
#include "rfcommhelper.h"
#include <qpushbutton.h>
#include <qmultilineedit.h>
#include <qlineedit.h>
#include <qlayout.h>
+#include <qcombobox.h>
#include <qlabel.h>
#include <opie2/oprocess.h>
#include <opie2/odebug.h>
using namespace Opie::Core;
using namespace OpieTooth;
using namespace Opie::Core;
Connection PPPDialog::conns[NCONNECTS];
PPPDialog::PPPDialog( const QString& device, int port, QWidget* parent,
const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl ) {
+ int i; //Just an index variable
if ( !name )
setName( "PPPDialog" );
setCaption( tr( "ppp connection " ) ) ;
m_device = device;
m_port = port;
@@ -37,64 +39,73 @@ PPPDialog::PPPDialog( const QString& device, int port, QWidget* parent,
outPut = new QMultiLineEdit( this );
QFont outPut_font( outPut->font() );
outPut_font.setPointSize( 8 );
outPut->setFont( outPut_font );
outPut->setWordWrap( QMultiLineEdit::WidgetWidth );
connectButton = new QPushButton( this );
connectButton->setText( tr( "Connect" ) );
-
+
+ serPort = new QComboBox(this);
+ for (i = 0; i < NCONNECTS; i++) {
+ if (!PPPDialog::conns[i].proc.isRunning())
+ serPort->insertItem(tr("rfcomm%1").arg(i));
+ }
+
layout->addWidget(info);
layout->addWidget(cmdLine);
+ layout->addWidget(serPort);
layout->addWidget(outPut);
layout->addWidget(connectButton);
connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) );
-
- connect(&PPPDialog::conns[0].proc,
- SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)),
- this, SLOT(fillOutPut(Opie::Core::OProcess*, char*, int)));
- connect( &PPPDialog::conns[0].proc,
- SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)),
- this, SLOT(fillErr(Opie::Core::OProcess*, char*, int)));
- connect( &PPPDialog::conns[0].proc,
- SIGNAL(processExited(Opie::Core::OProcess*)),
- this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
}
PPPDialog::~PPPDialog() {
}
void PPPDialog::connectToDevice() {
- if (PPPDialog::conns[0].proc.isRunning()) {
+ int portNum = serPort->currentText().right(1).toInt();
+ if (PPPDialog::conns[portNum].proc.isRunning()) {
outPut->append(tr("Work in progress"));
return;
}
outPut->clear();
- PPPDialog::conns[0].proc.clearArguments();
+ PPPDialog::conns[portNum].proc.clearArguments();
// vom popupmenu beziehen
if (cmdLine->text().isEmpty()) {//Connect by rfcomm
- PPPDialog::conns[0].proc << "rfcomm" << "connect"
- << "0" << m_device << QString::number(m_port);
+ PPPDialog::conns[portNum].proc << "rfcomm" << "connect"
+ << QString::number(portNum) << m_device << QString::number(m_port);
}
else {
- QString connectScript = "/etc/ppp/peers/" + cmdLine->text();
- PPPDialog::conns[0].proc << "pppd"
- << m_device << "call" << connectScript;
+ PPPDialog::conns[portNum].proc << "pppd"
+ << tr("/dev/bluetooth/rfcomm/%1").arg(portNum)
+ << "call"
+ << cmdLine->text();
}
- if (!PPPDialog::conns[0].proc.start(OProcess::NotifyOnExit, OProcess::All)) {
+ if (!PPPDialog::conns[portNum].proc.start(OProcess::NotifyOnExit,
+ OProcess::All)) {
outPut->append(tr("Couldn't start"));
}
else
{
- PPPDialog::conns[0].proc.resume();
+ PPPDialog::conns[portNum].proc.resume();
outPut->append(tr("Started"));
- PPPDialog::conns[0].btAddr = m_device;
- PPPDialog::conns[0].port = m_port;
+ PPPDialog::conns[portNum].btAddr = m_device;
+ PPPDialog::conns[portNum].port = m_port;
+ connect(&PPPDialog::conns[portNum].proc,
+ SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)),
+ this, SLOT(fillOutPut(Opie::Core::OProcess*, char*, int)));
+ connect( &PPPDialog::conns[portNum].proc,
+ SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)),
+ this, SLOT(fillErr(Opie::Core::OProcess*, char*, int)));
+ connect( &PPPDialog::conns[portNum].proc,
+ SIGNAL(processExited(Opie::Core::OProcess*)),
+ this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
}
}
void PPPDialog::fillOutPut( OProcess*, char* cha, int len ) {
QCString str(cha, len);
outPut->append(str);
}
@@ -110,12 +121,17 @@ void PPPDialog::slotProcessExited(OProcess* proc) {
outPut->append( QString::number(proc->exitStatus()) );
}
else
outPut->append( tr("Exited abnormally") );
}
void PPPDialog::closeEvent(QCloseEvent* e)
{
- if(PPPDialog::conns[0].proc.isRunning())
- PPPDialog::conns[0].proc.kill();
+ int i; //index variable
+ for (i = 0; i < NCONNECTS; i++) {
+ if(PPPDialog::conns[i].proc.isRunning())
+ PPPDialog::conns[i].proc.kill();
+ }
QDialog::closeEvent(e);
}
+
+//eof
diff --git a/noncore/net/opietooth/manager/pppdialog.h b/noncore/net/opietooth/manager/pppdialog.h
index 565fe1e..e0ffc7f 100644
--- a/noncore/net/opietooth/manager/pppdialog.h
+++ b/noncore/net/opietooth/manager/pppdialog.h
@@ -4,16 +4,17 @@
#include <qdialog.h>
#include <opie2/oprocess.h>
class QVBoxLayout;
class QPushButton;
class QMultiLineEdit;
class QLineEdit;
+class QComboBox;
#define NCONNECTS 10 //Maximal
namespace OpieTooth {
typedef struct {
Opie::Core::OProcess proc; //Connection process
QString btAddr; //MAC address
int port; //port
} Connection;
@@ -35,15 +36,16 @@ namespace OpieTooth {
public:
//Array of connections indexed by rfcomm device number
static Connection conns[NCONNECTS];
protected:
QVBoxLayout* layout;
QLineEdit* cmdLine;
QPushButton* connectButton;
QMultiLineEdit* outPut;
+ QComboBox* serPort;
private:
QString m_device;
int m_port;
};
}
#endif