summaryrefslogtreecommitdiff
authorkorovkin <korovkin>2006-03-19 14:56:24 (UTC)
committer korovkin <korovkin>2006-03-19 14:56:24 (UTC)
commitbf4d4b814d514762748fe602aeef6c43da102c3a (patch) (side-by-side diff)
tree611d82e4f062430dedd161242986fefa138e719c
parent4c59235642953b2b1d2a07b47313540e85fa5f6a (diff)
downloadopie-bf4d4b814d514762748fe602aeef6c43da102c3a.zip
opie-bf4d4b814d514762748fe602aeef6c43da102c3a.tar.gz
opie-bf4d4b814d514762748fe602aeef6c43da102c3a.tar.bz2
Fixed the way OBEX push uses ussp-push utility.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/obexdialog.cpp67
-rw-r--r--noncore/net/opietooth/manager/obexdialog.h13
2 files changed, 69 insertions, 11 deletions
diff --git a/noncore/net/opietooth/manager/obexdialog.cpp b/noncore/net/opietooth/manager/obexdialog.cpp
index 951d87a..d3fdd14 100644
--- a/noncore/net/opietooth/manager/obexdialog.cpp
+++ b/noncore/net/opietooth/manager/obexdialog.cpp
@@ -1,4 +1,5 @@
#include "obexdialog.h"
+#include <errno.h>
#include <qpushbutton.h>
#include <qmultilineedit.h>
@@ -20,5 +21,5 @@ using namespace Opie::Core;
using namespace Opie::Ui;
using namespace Opie::Core;
-ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags fl, const QString& device )
+ObexDialog::ObexDialog(const QString& device, QWidget* parent, const char* name, bool modal, WFlags fl)
: QDialog( parent, name, modal, fl ) {
@@ -30,8 +31,15 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
layout = new QVBoxLayout( this );
+ obexSend = new OProcess();
- QLabel* info = new QLabel( this );
+ info = new QLabel( this );
info->setText( tr("Which file should be beamed?") );
+ statLine = new QLabel(this);
+ statLine->setText( tr("Ready") );
+
+ status = new QMultiLineEdit(this);
+ status->setReadOnly(true);
+
cmdLine = new QLineEdit( this );
@@ -46,14 +54,27 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
layout->addWidget(info);
+ layout->addWidget(status);
layout->addWidget(cmdLine);
layout->addWidget(browserButton);
layout->addWidget(chNameLine);
layout->addWidget(sendButton);
+ layout->addWidget(statLine);
connect( sendButton, SIGNAL( clicked() ), this, SLOT( sendData() ) );
+ connect(obexSend, SIGNAL(processExited(Opie::Core::OProcess*)),
+ this, SLOT(slotProcessExited(Opie::Core::OProcess*)));
+ connect(obexSend, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)),
+ this, SLOT(slotPushOut(Opie::Core::OProcess*, char*, int)));
+ connect(obexSend, SIGNAL(receivedStderr(Opie::Core::OProcess*, char*, int)),
+ this, SLOT(slotPushErr(Opie::Core::OProcess*, char*, int)));
+
}
ObexDialog::~ObexDialog() {
+ if (obexSend->isRunning())
+ obexSend->kill();
+ delete obexSend;
+ obexSend = NULL;
}
@@ -67,5 +88,5 @@ void ObexDialog::browse() {
QString str = OFileDialog::getOpenFileName( 1,"/","", types, 0 );
cmdLine->setText( str );
-
+ statLine->setText( tr("Ready") );
}
@@ -74,18 +95,46 @@ void ObexDialog::sendData() {
QString file = QFileInfo( fileURL ).fileName();
QString modifiedName = chNameLine->text();
+ QString execName = "ussp-push";
+ if (obexSend->isRunning())
+ return;
+ obexSend->clearArguments();
// vom popupmenu beziehen
- OProcess* obexSend = new OProcess();
if ( !modifiedName.isEmpty() ) {
- *obexSend << "ussp-push" << m_device << fileURL << modifiedName;
+ *obexSend << execName << "--timeo 30" << m_device << fileURL << modifiedName;
} else {
- *obexSend << "ussp-push" << m_device << fileURL << file;
+ *obexSend << execName << "--timeo 30" << m_device << fileURL << file;
}
- if (!obexSend->start(OProcess::DontCare, OProcess::AllOutput) ) {
- owarn << "could not start" << oendl;
- delete obexSend;
+ obexSend->setUseShell(true);
+ if (!obexSend->start(OProcess::NotifyOnExit, OProcess::All) ) {
+ statLine->setText( tr("Error: couln't start process") );
+ }
+ else
+ statLine->setText( tr("Sending") );
}
+void ObexDialog::slotPushOut(OProcess*, char* buf, int len) {
+ QCString str(buf, len);
+ status->append(str);
+}
+void ObexDialog::slotPushErr(OProcess*, char* buf, int len) {
+ QCString str(buf, len);
+ status->append(str);
+}
+void ObexDialog::slotProcessExited(OProcess*) {
+ if (obexSend == NULL)
+ return;
+ if (obexSend->normalExit()) {
+ status->append( tr("Finished with result ") );
+ status->append( QString::number(obexSend->exitStatus()) );
+ status->append( tr("\n") );
+ odebug << obexSend->exitStatus() << oendl;
+ statLine->setText( tr("Finished: ") + tr(strerror(obexSend->exitStatus())) );
+ }
+ else {
+ status->append( tr("Exited abnormally\n") );
+ statLine->setText( tr("Exited abnormally") );
+ }
}
diff --git a/noncore/net/opietooth/manager/obexdialog.h b/noncore/net/opietooth/manager/obexdialog.h
index d5b5682..44a26f3 100644
--- a/noncore/net/opietooth/manager/obexdialog.h
+++ b/noncore/net/opietooth/manager/obexdialog.h
@@ -5,4 +5,6 @@
#include <qdialog.h>
#include <opie2/oprocess.h>
+#include <qlabel.h>
+#include <qmultilineedit.h>
class QVBoxLayout;
@@ -11,5 +13,5 @@ class QMultiLineEdit;
class QLineEdit;
-
+namespace Opie {namespace Core {class OProcess;}}
namespace OpieTooth {
@@ -19,5 +21,5 @@ namespace OpieTooth {
public:
- ObexDialog( QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0, const QString& device = 0);
+ ObexDialog( const QString& device = 0, QWidget* parent = 0, const char* name = 0, bool modal = TRUE, WFlags fl = 0);
~ObexDialog();
@@ -26,4 +28,7 @@ private slots:
void browse();
void sendData();
+ void slotPushOut(Opie::Core::OProcess*, char*, int);
+ void slotPushErr(Opie::Core::OProcess*, char*, int);
+ void slotProcessExited(Opie::Core::OProcess* proc);
protected:
@@ -32,7 +37,11 @@ private slots:
QLineEdit* chNameLine;
QPushButton* sendButton;
+ QLabel* info;
+ QMultiLineEdit* status;
+ QLabel* statLine;
private:
// Device that is used
QString m_device;
+ Opie::Core::OProcess *obexSend;
};
}