Diffstat (limited to 'noncore/apps/opie-console/file_layer.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-console/file_layer.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/file_layer.cpp b/noncore/apps/opie-console/file_layer.cpp index 3ff85af..4830f3b 100644 --- a/noncore/apps/opie-console/file_layer.cpp +++ b/noncore/apps/opie-console/file_layer.cpp | |||
@@ -1,2 +1,11 @@ | |||
1 | /* | ||
2 | * <zecke> what you would simply do is connect stdout of the sz process | ||
3 | * <zecke> to the send slot of the IOLayer | ||
4 | * <zecke> and stdin to the receive signal of IOlayer | ||
5 | * <zecke> on stderr you can see the progress | ||
6 | */ | ||
7 | |||
1 | #include "file_layer.h" | 8 | #include "file_layer.h" |
9 | #include <qfile.h> | ||
10 | #include <opie/oprocess.h> | ||
2 | 11 | ||
@@ -9,2 +18,25 @@ FileTransferLayer::~FileTransferLayer() { | |||
9 | } | 18 | } |
19 | |||
20 | void FileTransferLayer::sendFile(const QFile& file) { | ||
21 | |||
22 | sendFile(file.name()); | ||
23 | } | ||
24 | |||
25 | void FileTransferLayer::sendFile(const QString& file) { | ||
26 | |||
27 | proc = new OProcess; | ||
28 | *proc << "sz"; | ||
29 | *proc << "-vv" << file; | ||
30 | connect(proc, SIGNAL(processExited(OProcess *)), | ||
31 | this, SLOT(sent())); | ||
32 | connect(proc, SIGNAL(processRecievedStdout(OProcess *, char *, int)), | ||
33 | this, SLOT(SzRecievedStdout(OProcess *, char *, int))); | ||
34 | connect(proc, SIGNAL(processRecievedStderr(OProcess *, char *, int)), | ||
35 | this, SLOT(SzRecievedStderr(OProcess *, char *, int))); | ||
36 | connect(m_layer, SIGNAL(received(QByteArray &)), | ||
37 | this, SLOT(recievedStdin(QByteArray &))); | ||
38 | proc->start(OProcess::NotifyOnExit, OProcess::All); | ||
39 | |||
40 | } | ||
41 | |||
10 | IOLayer* FileTransferLayer::layer() { | 42 | IOLayer* FileTransferLayer::layer() { |
@@ -13 +45,22 @@ IOLayer* FileTransferLayer::layer() { | |||
13 | 45 | ||
46 | |||
47 | void FileTransferLayer::SzRecievedStdout(OProcess *, char *buffer, int buflen) { | ||
48 | |||
49 | QByteArray data(buflen); | ||
50 | data.fill(*buffer, buflen); | ||
51 | |||
52 | // send out through the io layer | ||
53 | m_layer->send(data); | ||
54 | } | ||
55 | |||
56 | void FileTransferLayer::SzRecievedStderr(OProcess *, char *, int) { | ||
57 | |||
58 | // parse and show data in a progress dialog/widget | ||
59 | } | ||
60 | |||
61 | void FileTransferLayer::recievedStdin(QByteArray &data) { | ||
62 | |||
63 | // recieved data from the io layer goes to sz | ||
64 | proc->writeStdin(data.data(), data.size()); | ||
65 | |||
66 | } | ||