summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/pandialog.cpp125
-rw-r--r--noncore/net/opietooth/manager/pandialog.h40
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 @@
1
2#include "pandialog.h"
3#include <qpushbutton.h>
4#include <qlayout.h>
5#include <qcheckbox.h>
6#include <qlabel.h>
7#include <qstring.h>
8#include <qmultilineedit.h>
9#include <opie2/oprocess.h>
10#include <opie2/odebug.h>
11using namespace Opie::Core;
12
13using namespace OpieTooth;
14
15using namespace Opie::Core;
16
17PanDialog::PanDialog( const QString& device, QWidget* parent,
18 const char* name, bool modal, WFlags fl )
19 : QDialog( parent, name, modal, fl ) {
20 m_panConnect = NULL;
21
22 if ( !name )
23 setName( "PANDialog" );
24 setCaption( tr( "PAN connection " ) ) ;
25
26 m_device = device;
27
28 layout = new QVBoxLayout( this );
29
30 outPut = new QMultiLineEdit( this );
31 QFont outPut_font( outPut->font() );
32 outPut_font.setPointSize( 8 );
33 outPut->setFont( outPut_font );
34 outPut->setWordWrap( QMultiLineEdit::WidgetWidth );
35
36 connectButton = new QPushButton( this );
37 connectButton->setText( tr( "Connect" ) );
38
39 doEncryption = new QCheckBox(this, "encrypt");
40 doEncryption->setText( tr( "encrypt" ) );
41 doSecure = new QCheckBox(this, "secure connection");
42 doSecure->setText( tr( "secure connection" ) );
43
44 layout->addWidget(doEncryption);
45 layout->addWidget(doSecure);
46 layout->addWidget(outPut);
47 layout->addWidget(connectButton);
48
49 connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) );
50}
51
52PanDialog::~PanDialog() {
53}
54
55void PanDialog::connectToDevice() {
56 bool doEnc = doEncryption->isChecked();
57 bool doSec = doSecure->isChecked();
58
59 if (m_panConnect) {
60 outPut->append(tr("Work in progress"));
61 return;
62 }
63 m_panConnect = new OProcess();
64 outPut->clear();
65
66 // Fill process command line
67 *m_panConnect << tr("pand")
68 << tr("--connect") << m_device
69 << tr("--nodetach");
70 if (doEnc)
71 *m_panConnect << tr("--encrypt");
72 if (doSec)
73 *m_panConnect << tr("--secure");
74 if (!m_panConnect->start(OProcess::NotifyOnExit,
75 OProcess::All)) {
76 outPut->append(tr("Couldn't start"));
77 delete m_panConnect;
78 m_panConnect = NULL;
79 }
80 else
81 {
82 m_panConnect->resume();
83 outPut->append(tr("Started"));
84 connect(m_panConnect,
85 SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)),
86 this, SLOT(fillOutPut(Opie::Core::OProcess*, char*, int)));
87 connect(m_panConnect,
88 SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)),
89 this, SLOT(fillErr(Opie::Core::OProcess*, char*, int)));
90 connect(m_panConnect,
91 SIGNAL(processExited(Opie::Core::OProcess*)),
92 this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
93 }
94}
95
96void PanDialog::fillOutPut( OProcess*, char* cha, int len ) {
97 QCString str(cha, len);
98 outPut->append(str);
99}
100
101void PanDialog::fillErr(OProcess*, char* buf, int len)
102{
103 QCString str(buf, len);
104 outPut->append(str);
105}
106
107void PanDialog::slotProcessExited(OProcess* proc) {
108 if (m_panConnect->normalExit()) {
109 outPut->append( tr("Finished with result ") );
110 outPut->append( QString::number(proc->exitStatus()) );
111 }
112 else
113 outPut->append( tr("Exited abnormally") );
114 delete m_panConnect;
115 m_panConnect = NULL;
116}
117
118void PanDialog::closeEvent(QCloseEvent* e)
119{
120 if (m_panConnect && m_panConnect->isRunning())
121 m_panConnect->kill();
122 QDialog::closeEvent(e);
123}
124
125//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 @@
1#ifndef PANDIALOG_H
2#define DUNDIALOG_H
3
4
5#include <qdialog.h>
6#include <opie2/oprocess.h>
7
8class QVBoxLayout;
9class QMultiLineEdit;
10class QPushButton;
11class QCheckBox;
12
13namespace OpieTooth {
14 class PanDialog : public QDialog {
15
16 Q_OBJECT
17
18 public:
19 PanDialog(const QString& device = 0, QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0);
20 ~PanDialog();
21
22 private slots:
23 void connectToDevice();
24 void fillOutPut( Opie::Core::OProcess* pppDial, char* cha, int len );
25 void fillErr(Opie::Core::OProcess*, char*, int);
26 void slotProcessExited(Opie::Core::OProcess* proc);
27 void closeEvent(QCloseEvent* e);
28 protected:
29 QVBoxLayout* layout;
30 QPushButton* connectButton;
31 QMultiLineEdit* outPut;
32 QCheckBox* doEncryption;
33 QCheckBox* doSecure;
34 Opie::Core::OProcess* m_panConnect;
35
36 private:
37 QString m_device; //device BT address
38 };
39}
40#endif