summaryrefslogtreecommitdiff
path: root/noncore
authorkorovkin <korovkin>2006-04-04 18:53:07 (UTC)
committer korovkin <korovkin>2006-04-04 18:53:07 (UTC)
commit31ea6e9f697d72a31ce319f7f42254fe90e48a36 (patch) (side-by-side diff)
tree694ad373b6ac80ebdf93137029b0b6c5d335d3f6 /noncore
parent76276b77e99897ae264aa5b171191521edada420 (diff)
downloadopie-31ea6e9f697d72a31ce319f7f42254fe90e48a36.zip
opie-31ea6e9f697d72a31ce319f7f42254fe90e48a36.tar.gz
opie-31ea6e9f697d72a31ce319f7f42254fe90e48a36.tar.bz2
Added persist mode for dund.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/TODO.txt2
-rw-r--r--noncore/net/opietooth/manager/dundialog.cpp8
-rw-r--r--noncore/net/opietooth/manager/dundialog.h1
-rw-r--r--noncore/net/opietooth/manager/dunpopup.cpp3
4 files changed, 13 insertions, 1 deletions
diff --git a/noncore/net/opietooth/manager/TODO.txt b/noncore/net/opietooth/manager/TODO.txt
index 1914d8b..ed512cd 100644
--- a/noncore/net/opietooth/manager/TODO.txt
+++ b/noncore/net/opietooth/manager/TODO.txt
@@ -1,4 +1,4 @@
-1. Try and run and correct authentification and encoding.
+1. Improve hcid.conf parsing algorithm.
2. Collect requirements from others.
//eof
diff --git a/noncore/net/opietooth/manager/dundialog.cpp b/noncore/net/opietooth/manager/dundialog.cpp
index 7aac271..c6d8619 100644
--- a/noncore/net/opietooth/manager/dundialog.cpp
+++ b/noncore/net/opietooth/manager/dundialog.cpp
@@ -1,140 +1,148 @@
/* $Id$ */
/* DUN connection dialog */
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#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" ) );
+ persist = new QCheckBox(this, "persist");
+ persist->setText( tr( "persist" ) );
+
layout->addWidget(info);
layout->addWidget(cmdLine);
layout->addWidget(doEncryption);
+ layout->addWidget(persist);
layout->addWidget(outPut);
layout->addWidget(connectButton);
connect( connectButton, SIGNAL( clicked() ), this, SLOT( connectToDevice() ) );
}
DunDialog::~DunDialog() {
}
void DunDialog::connectToDevice() {
bool doEnc = doEncryption->isChecked();
+ bool doPersist = persist->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");
+ if (doPersist)
+ *m_dunConnect << tr("--persist");
*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
index 9e219cd..a0d16ad 100644
--- a/noncore/net/opietooth/manager/dundialog.h
+++ b/noncore/net/opietooth/manager/dundialog.h
@@ -1,52 +1,53 @@
/* $Id$ */
/* DUN connection dialog */
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#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;
+ QCheckBox* persist;
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/dunpopup.cpp b/noncore/net/opietooth/manager/dunpopup.cpp
index c304b2d..6844988 100644
--- a/noncore/net/opietooth/manager/dunpopup.cpp
+++ b/noncore/net/opietooth/manager/dunpopup.cpp
@@ -1,80 +1,83 @@
/* $Id$ */
/* DUN context menu */
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <qpe/qcopenvelope_qws.h>
#include <qmessagebox.h>
#include <opie2/odebug.h>
#include <opie2/oprocess.h>
#include <qpe/qpeapplication.h>
using namespace Opie::Core;
#include "dunpopup.h"
#include "dundialog.h"
using namespace OpieTooth;
/*
* c'tor init the QAction
*/
DunPopup::DunPopup( const Services& service,
BTDeviceItem* item ) : QPopupMenu(), m_service(service) {
owarn << "DunPopup c'tor" << oendl;
m_item = item;
QAction *a, *b, *c;
a = new QAction(); // so it's get deleted
a->setText( tr("connect") );
a->addTo( this );
connect( a, SIGNAL( activated() ), this, SLOT( slotConnect() ) );
b = new QAction();
b->setText( tr( "connect+conf" ) );
b->addTo( this );
connect( b, SIGNAL( activated() ), this, SLOT( slotConnectAndConfig() ) );
c = new QAction();
c->setText( tr( "disconnect" ) );
c->addTo( this );
connect( c, SIGNAL( activated() ), this, SLOT( slotDisconnect() ) );
};
DunPopup::~DunPopup() {
}
void DunPopup::slotConnect() {
odebug << "connect" << oendl;
DunDialog dundlg(m_item->mac(),
m_service.protocolDescriptorList().last().port());
QPEApplication::execDialog( &dundlg );
}
void DunPopup::slotDisconnect() {
OProcess dunDis;
OProcess pppDis;
+ OProcess dunKill;
dunDis << tr("dund") << tr("--kill") << m_item->mac();
dunDis.start(OProcess::DontCare, OProcess::NoCommunication);
+ dunKill << tr("killall") << tr("-q") << tr("dund");
+ dunKill.start(OProcess::DontCare, OProcess::NoCommunication);
pppDis << tr("killall") << tr("-q") << tr("pppd");
pppDis.start(OProcess::DontCare, OProcess::NoCommunication);
sleep(1);
QMessageBox::information(this, tr("DUN Disconnect"), tr("DUN Disconnected"));
}
void DunPopup::slotConnectAndConfig() {
slotConnect();
// more intelligence here later like passing the device ( bnepX )
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << QString( "networksettings" );
}