summaryrefslogtreecommitdiff
Side-by-side diff
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
@@ -2,2 +2,3 @@
#include "obexdialog.h"
+#include <errno.h>
#include <qpushbutton.h>
@@ -21,3 +22,3 @@ 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 ) {
@@ -31,6 +32,13 @@ 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 );
@@ -47,2 +55,3 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
layout->addWidget(info);
+ layout->addWidget(status);
layout->addWidget(cmdLine);
@@ -51,2 +60,3 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
layout->addWidget(sendButton);
+ layout->addWidget(statLine);
@@ -54,2 +64,9 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
+ 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)));
+
}
@@ -57,2 +74,6 @@ ObexDialog::ObexDialog( QWidget* parent, const char* name, bool modal, WFlags f
ObexDialog::~ObexDialog() {
+ if (obexSend->isRunning())
+ obexSend->kill();
+ delete obexSend;
+ obexSend = NULL;
}
@@ -68,3 +89,3 @@ void ObexDialog::browse() {
cmdLine->setText( str );
-
+ statLine->setText( tr("Ready") );
}
@@ -75,17 +96,45 @@ void ObexDialog::sendData() {
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
@@ -6,2 +6,4 @@
#include <opie2/oprocess.h>
+#include <qlabel.h>
+#include <qmultilineedit.h>
@@ -12,3 +14,3 @@ class QLineEdit;
-
+namespace Opie {namespace Core {class OProcess;}}
namespace OpieTooth {
@@ -20,3 +22,3 @@ 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();
@@ -27,2 +29,5 @@ private slots:
void sendData();
+ void slotPushOut(Opie::Core::OProcess*, char*, int);
+ void slotPushErr(Opie::Core::OProcess*, char*, int);
+ void slotProcessExited(Opie::Core::OProcess* proc);
@@ -33,2 +38,5 @@ private slots:
QPushButton* sendButton;
+ QLabel* info;
+ QMultiLineEdit* status;
+ QLabel* statLine;
private:
@@ -36,2 +44,3 @@ private slots:
QString m_device;
+ Opie::Core::OProcess *obexSend;
};