From 812083469c80a0a07ad1ba41d6795e05f950710b Mon Sep 17 00:00:00 2001 From: korovkin Date: Sat, 01 Apr 2006 17:42:42 +0000 Subject: DUN connection parameters dialog added. --- (limited to 'noncore/net/opietooth/manager/dundialog.cpp') 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 +#include +#include +#include +#include +#include +#include +#include +#include +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 -- cgit v0.9.0.2