-rw-r--r-- | noncore/net/opietooth/manager/pandialog.cpp | 125 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/pandialog.h | 40 |
2 files changed, 165 insertions, 0 deletions
diff --git a/noncore/net/opietooth/manager/pandialog.cpp b/noncore/net/opietooth/manager/pandialog.cpp new file mode 100644 index 0000000..ca6f491 --- a/dev/null +++ b/noncore/net/opietooth/manager/pandialog.cpp @@ -0,0 +1,125 @@ + +#include "pandialog.h" +#include <qpushbutton.h> +#include <qlayout.h> +#include <qcheckbox.h> +#include <qlabel.h> +#include <qstring.h> +#include <qmultilineedit.h> +#include <opie2/oprocess.h> +#include <opie2/odebug.h> +using namespace Opie::Core; + +using namespace OpieTooth; + +using namespace Opie::Core; + +PanDialog::PanDialog( const QString& device, QWidget* parent, + const char* name, bool modal, WFlags fl ) + : QDialog( parent, name, modal, fl ) { + m_panConnect = NULL; + + if ( !name ) + setName( "PANDialog" ); + setCaption( tr( "PAN connection " ) ) ; + + m_device = device; + + layout = new QVBoxLayout( 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" ) ); + doSecure = new QCheckBox(this, "secure connection"); + doSecure->setText( tr( "secure connection" ) ); + + layout->addWidget(doEncryption); + layout->addWidget(doSecure); + layout->addWidget(outPut); + layout->addWidget(connectButton); + + connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) ); +} + +PanDialog::~PanDialog() { +} + +void PanDialog::connectToDevice() { + bool doEnc = doEncryption->isChecked(); + bool doSec = doSecure->isChecked(); + + if (m_panConnect) { + outPut->append(tr("Work in progress")); + return; + } + m_panConnect = new OProcess(); + outPut->clear(); + + // Fill process command line + *m_panConnect << tr("pand") + << tr("--connect") << m_device + << tr("--nodetach"); + if (doEnc) + *m_panConnect << tr("--encrypt"); + if (doSec) + *m_panConnect << tr("--secure"); + if (!m_panConnect->start(OProcess::NotifyOnExit, + OProcess::All)) { + outPut->append(tr("Couldn't start")); + delete m_panConnect; + m_panConnect = NULL; + } + else + { + m_panConnect->resume(); + outPut->append(tr("Started")); + connect(m_panConnect, + SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)), + this, SLOT(fillOutPut(Opie::Core::OProcess*, char*, int))); + connect(m_panConnect, + SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)), + this, SLOT(fillErr(Opie::Core::OProcess*, char*, int))); + connect(m_panConnect, + SIGNAL(processExited(Opie::Core::OProcess*)), + this, SLOT(slotProcessExited(Opie::Core::OProcess*))); + } +} + +void PanDialog::fillOutPut( OProcess*, char* cha, int len ) { + QCString str(cha, len); + outPut->append(str); +} + +void PanDialog::fillErr(OProcess*, char* buf, int len) +{ + QCString str(buf, len); + outPut->append(str); +} + +void PanDialog::slotProcessExited(OProcess* proc) { + if (m_panConnect->normalExit()) { + outPut->append( tr("Finished with result ") ); + outPut->append( QString::number(proc->exitStatus()) ); + } + else + outPut->append( tr("Exited abnormally") ); + delete m_panConnect; + m_panConnect = NULL; +} + +void PanDialog::closeEvent(QCloseEvent* e) +{ + if (m_panConnect && m_panConnect->isRunning()) + m_panConnect->kill(); + QDialog::closeEvent(e); +} + +//eof diff --git a/noncore/net/opietooth/manager/pandialog.h b/noncore/net/opietooth/manager/pandialog.h new file mode 100644 index 0000000..02363d2 --- a/dev/null +++ b/noncore/net/opietooth/manager/pandialog.h @@ -0,0 +1,40 @@ +#ifndef PANDIALOG_H +#define DUNDIALOG_H + + +#include <qdialog.h> +#include <opie2/oprocess.h> + +class QVBoxLayout; +class QMultiLineEdit; +class QPushButton; +class QCheckBox; + +namespace OpieTooth { + class PanDialog : public QDialog { + + Q_OBJECT + + public: + PanDialog(const QString& device = 0, QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0); + ~PanDialog(); + + 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; + QPushButton* connectButton; + QMultiLineEdit* outPut; + QCheckBox* doEncryption; + QCheckBox* doSecure; + Opie::Core::OProcess* m_panConnect; + + private: + QString m_device; //device BT address + }; +} +#endif |