-rw-r--r-- | noncore/net/opietooth/manager/dundialog.cpp | 131 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/dundialog.h | 42 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/manager.pro | 8 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/popuphelper.cpp | 4 |
4 files changed, 179 insertions, 6 deletions
diff --git a/noncore/net/opietooth/manager/dundialog.cpp b/noncore/net/opietooth/manager/dundialog.cpp new file mode 100644 index 0000000..033534c --- a/dev/null +++ b/noncore/net/opietooth/manager/dundialog.cpp @@ -0,0 +1,131 @@ + +#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 <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 ) { + 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 ); + + 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" ) ); + + layout->addWidget(info); + layout->addWidget(cmdLine); + layout->addWidget(doEncryption); + layout->addWidget(outPut); + layout->addWidget(connectButton); + + connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) ); +} + +DunDialog::~DunDialog() { +} + +void DunDialog::connectToDevice() { + bool doEnc = doEncryption->isChecked(); + if (cmdLine->text() == "") + 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"); + *m_dunConnect << tr("call") + << cmdLine->text(); + 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(); + QDialog::closeEvent(e); +} + +//eof diff --git a/noncore/net/opietooth/manager/dundialog.h b/noncore/net/opietooth/manager/dundialog.h new file mode 100644 index 0000000..746c8a3 --- a/dev/null +++ b/noncore/net/opietooth/manager/dundialog.h @@ -0,0 +1,42 @@ +#ifndef DUNDIALOG_H +#define DUNDIALOG_H + + +#include <qdialog.h> +#include <opie2/oprocess.h> + +class QVBoxLayout; +class QPushButton; +class QMultiLineEdit; +class QLineEdit; +class QCheckBox; + +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; + QPushButton* connectButton; + QMultiLineEdit* outPut; + QCheckBox* doEncryption; + + 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/manager.pro b/noncore/net/opietooth/manager/manager.pro index 5e7d395..d042c4c 100644 --- a/noncore/net/opietooth/manager/manager.pro +++ b/noncore/net/opietooth/manager/manager.pro @@ -5,6 +5,6 @@ HEADERS = btconnectionitem.h btdeviceitem.h \ scandialog.h btlistitem.h filistitem.h \ hciconfwrapper.h bticonloader.h \ - pppdialog.h obexdialog.h obexftpdialog.h \ - rfcommassigndialogimpl.h rfcommassigndialogitem.h \ + pppdialog.h dundialog.h obexdialog.h obexftpdialog.h \ + rfcommassigndialogimpl.h rfcommassigndialogitem.h \ devicehandler.h rfcpopup.h obexpopup.h obexftpopup.h \ rfcommhelper.h panpopup.h dunpopup.h rfcommconfhandler.h @@ -15,6 +15,6 @@ SOURCES = btconnectionitem.cpp btdeviceitem.cpp \ bluebase.cpp scandialog.cpp \ btlistitem.cpp hciconfwrapper.cpp \ - bticonloader.cpp pppdialog.cpp \ - rfcommassigndialogimpl.cpp rfcommassigndialogitem.cpp \ + bticonloader.cpp pppdialog.cpp dundialog.cpp \ + rfcommassigndialogimpl.cpp rfcommassigndialogitem.cpp \ obexdialog.cpp devicehandler.cpp \ rfcpopup.cpp obexpopup.cpp obexftpopup.cpp obexftpdialog.cpp \ diff --git a/noncore/net/opietooth/manager/popuphelper.cpp b/noncore/net/opietooth/manager/popuphelper.cpp index bd2071a..b3d7aa5 100644 --- a/noncore/net/opietooth/manager/popuphelper.cpp +++ b/noncore/net/opietooth/manager/popuphelper.cpp @@ -28,7 +28,7 @@ QPopupMenu* PopupHelper::find( int id, const Services& ser, BTDeviceItem* item ) void PopupHelper::init() { - insert( 4355, newRfcComPopup ); - insert( 4354, newDunPopup ); insert( 4353, newRfcComPopup ); + insert( 4354, newDunPopup ); + insert( 4355, newRfcComPopup ); insert( 4357, newObexPushPopup ); insert( 4358, newObexFtpPopup ); |