-rw-r--r-- | noncore/net/opietooth/manager/dundialog.cpp | 15 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/dundialog.h | 3 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/pppdialog.cpp | 26 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/pppdialog.h | 12 |
4 files changed, 46 insertions, 10 deletions
diff --git a/noncore/net/opietooth/manager/dundialog.cpp b/noncore/net/opietooth/manager/dundialog.cpp index c6d8619..872ab00 100644 --- a/noncore/net/opietooth/manager/dundialog.cpp +++ b/noncore/net/opietooth/manager/dundialog.cpp @@ -1,144 +1,153 @@ /* $Id$ */ /* DUN connection dialog */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dundialog.h" #include <qpushbutton.h> #include <qmultilineedit.h> #include <qlineedit.h> #include <qlayout.h> #include <qcheckbox.h> #include <qlabel.h> #include <qstring.h> +#include <qcombobox.h> +#include <qdir.h> #include <opie2/oprocess.h> #include <opie2/odebug.h> using namespace Opie::Core; using namespace OpieTooth; using namespace Opie::Core; DunDialog::DunDialog( const QString& device, int port, QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { + QDir d("/etc/ppp/peers/"); //Dir we search files in + d.setFilter( QDir::Files); + d.setSorting( QDir::Size | QDir::Reversed ); + if ( !name ) setName( "DUNDialog" ); setCaption( tr( "DUN connection " ) ) ; m_device = device; m_port = port; m_dunConnect = NULL; layout = new QVBoxLayout( this ); QLabel* info = new QLabel( this ); info->setText( tr("Enter an ppp script name:") ); - cmdLine = new QLineEdit( this ); + cmdLine = new QComboBox( this ); + cmdLine->setEditable(true); 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" ) ); doEncryption = new QCheckBox(this, "encrypt"); doEncryption->setText( tr( "encrypt" ) ); persist = new QCheckBox(this, "persist"); persist->setText( tr( "persist" ) ); layout->addWidget(info); layout->addWidget(cmdLine); layout->addWidget(doEncryption); layout->addWidget(persist); layout->addWidget(outPut); layout->addWidget(connectButton); connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) ); + //And fill cmdLine with ppp script filenames + cmdLine->insertStringList(d.entryList()); } DunDialog::~DunDialog() { } void DunDialog::connectToDevice() { bool doEnc = doEncryption->isChecked(); bool doPersist = persist->isChecked(); - if (cmdLine->text() == "") + if (cmdLine->currentText() == "") return; if (m_dunConnect) { outPut->append(tr("Work in progress")); return; } m_dunConnect = new OProcess(); outPut->clear(); // Fill process command line *m_dunConnect << tr("dund") << tr("--connect") << m_device << tr("--channel") << QString::number(m_port) << tr("--nodetach"); if (doEnc) *m_dunConnect << tr("--encrypt"); if (doPersist) *m_dunConnect << tr("--persist"); *m_dunConnect << tr("call") - << cmdLine->text(); + << cmdLine->currentText(); if (!m_dunConnect->start(OProcess::NotifyOnExit, OProcess::All)) { outPut->append(tr("Couldn't start")); delete m_dunConnect; m_dunConnect = NULL; } else { m_dunConnect->resume(); outPut->append(tr("Started")); connect(m_dunConnect, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)), this, SLOT(fillOutPut(Opie::Core::OProcess*, char*, int))); connect(m_dunConnect, SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)), this, SLOT(fillErr(Opie::Core::OProcess*, char*, int))); connect(m_dunConnect, SIGNAL(processExited(Opie::Core::OProcess*)), this, SLOT(slotProcessExited(Opie::Core::OProcess*))); } } void DunDialog::fillOutPut( OProcess*, char* cha, int len ) { QCString str(cha, len); outPut->append(str); } void DunDialog::fillErr(OProcess*, char* buf, int len) { QCString str(buf, len); outPut->append(str); } void DunDialog::slotProcessExited(OProcess* proc) { if (m_dunConnect->normalExit()) { outPut->append( tr("Finished with result ") ); outPut->append( QString::number(proc->exitStatus()) ); } else outPut->append( tr("Exited abnormally") ); delete m_dunConnect; m_dunConnect = NULL; } void DunDialog::closeEvent(QCloseEvent* e) { if (m_dunConnect && m_dunConnect->isRunning()) m_dunConnect->kill(); diff --git a/noncore/net/opietooth/manager/dundialog.h b/noncore/net/opietooth/manager/dundialog.h index a0d16ad..8310e40 100644 --- a/noncore/net/opietooth/manager/dundialog.h +++ b/noncore/net/opietooth/manager/dundialog.h @@ -1,53 +1,54 @@ /* $Id$ */ /* DUN connection dialog */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DUNDIALOG_H #define DUNDIALOG_H #include <qdialog.h> #include <opie2/oprocess.h> class QVBoxLayout; class QPushButton; class QMultiLineEdit; class QLineEdit; class QCheckBox; +class QComboBox; namespace OpieTooth { class DunDialog : public QDialog { Q_OBJECT public: DunDialog(const QString& device = 0, int port = 0, QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0); ~DunDialog(); private slots: void connectToDevice(); void fillOutPut( Opie::Core::OProcess* pppDial, char* cha, int len ); void fillErr(Opie::Core::OProcess*, char*, int); void slotProcessExited(Opie::Core::OProcess* proc); void closeEvent(QCloseEvent* e); protected: QVBoxLayout* layout; - QLineEdit* cmdLine; + QComboBox* cmdLine; QPushButton* connectButton; QMultiLineEdit* outPut; QCheckBox* doEncryption; QCheckBox* persist; private: QString m_device; //device BT address int m_port; //device process Opie::Core::OProcess* m_dunConnect; //DUN process }; } #endif diff --git a/noncore/net/opietooth/manager/pppdialog.cpp b/noncore/net/opietooth/manager/pppdialog.cpp index 11091c4..1df22a1 100644 --- a/noncore/net/opietooth/manager/pppdialog.cpp +++ b/noncore/net/opietooth/manager/pppdialog.cpp @@ -1,131 +1,147 @@ - +/* $Id$ */ +/* PPP/rfcomm connection dialog */ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ #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 <qdir.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 + QDir d("/etc/ppp/peers/"); //Dir we search files in + d.setFilter( QDir::Files); + d.setSorting( QDir::Size | QDir::Reversed ); if ( !name ) setName( "PPPDialog" ); setCaption( tr( "ppp connection " ) ) ; m_device = device; m_port = port; layout = new QVBoxLayout( this ); QLabel* info = new QLabel( this ); - info->setText( tr("Enter an ppp script name:") ); + info->setText( tr("Enter a ppp script name:") ); - cmdLine = new QLineEdit( this ); + cmdLine = new QComboBox( this ); + cmdLine->setEditable(true); 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() ) ); + //And fill cmdLine with ppp script filenames + cmdLine->insertStringList(d.entryList()); } PPPDialog::~PPPDialog() { } void PPPDialog::connectToDevice() { int portNum = serPort->currentText().right(1).toInt(); if (PPPDialog::conns[portNum].proc.isRunning()) { outPut->append(tr("Work in progress")); return; } outPut->clear(); PPPDialog::conns[portNum].proc.clearArguments(); // vom popupmenu beziehen - if (cmdLine->text().isEmpty()) {//Connect by rfcomm + if (cmdLine->currentText().isEmpty()) {//Connect by rfcomm PPPDialog::conns[portNum].proc << "rfcomm" << "connect" << QString::number(portNum) << m_device << QString::number(m_port); } else { PPPDialog::conns[portNum].proc << "pppd" << tr("/dev/bluetooth/rfcomm/%1").arg(portNum) << "call" - << cmdLine->text(); + << cmdLine->currentText(); } if (!PPPDialog::conns[portNum].proc.start(OProcess::NotifyOnExit, OProcess::All)) { outPut->append(tr("Couldn't start")); } else { PPPDialog::conns[portNum].proc.resume(); outPut->append(tr("Started")); 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); } void PPPDialog::fillErr(OProcess*, char* buf, int len) { QCString str(buf, len); outPut->append(str); } void PPPDialog::slotProcessExited(OProcess* proc) { if (proc->normalExit()) { outPut->append( tr("Finished with result ") ); outPut->append( QString::number(proc->exitStatus()) ); } else outPut->append( tr("Exited abnormally") ); } void PPPDialog::closeEvent(QCloseEvent* e) { int i; //index variable for (i = 0; i < NCONNECTS; i++) { if(PPPDialog::conns[i].proc.isRunning()) diff --git a/noncore/net/opietooth/manager/pppdialog.h b/noncore/net/opietooth/manager/pppdialog.h index e0ffc7f..d55c15f 100644 --- a/noncore/net/opietooth/manager/pppdialog.h +++ b/noncore/net/opietooth/manager/pppdialog.h @@ -1,51 +1,61 @@ +/* $Id$ */ +/* PPP/rfcomm connection dialog */ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ #ifndef PPPDIALOG_H #define PPPDIALOG_H #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; class PPPDialog : public QDialog { Q_OBJECT public: PPPDialog(const QString& device = 0, int port = 0, QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0); ~PPPDialog(); private slots: void connectToDevice(); void fillOutPut( Opie::Core::OProcess* pppDial, char* cha, int len ); void fillErr(Opie::Core::OProcess*, char*, int); void slotProcessExited(Opie::Core::OProcess* proc); void closeEvent(QCloseEvent* e); public: //Array of connections indexed by rfcomm device number static Connection conns[NCONNECTS]; protected: QVBoxLayout* layout; - QLineEdit* cmdLine; + QComboBox* cmdLine; QPushButton* connectButton; QMultiLineEdit* outPut; QComboBox* serPort; private: QString m_device; int m_port; }; } #endif |