summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/dundialog.cpp131
-rw-r--r--noncore/net/opietooth/manager/dundialog.h42
-rw-r--r--noncore/net/opietooth/manager/manager.pro8
-rw-r--r--noncore/net/opietooth/manager/popuphelper.cpp4
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 );