-rw-r--r-- | noncore/apps/opie-console/file_layer.cpp | 53 | ||||
-rw-r--r-- | noncore/apps/opie-console/file_layer.h | 11 |
2 files changed, 60 insertions, 4 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,4 +1,13 @@ | |||
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 | ||
3 | FileTransferLayer::FileTransferLayer(IOLayer *layer) | 12 | FileTransferLayer::FileTransferLayer(IOLayer *layer) |
4 | : QObject(), m_layer( layer ) | 13 | : QObject(), m_layer( layer ) |
@@ -7,7 +16,51 @@ FileTransferLayer::FileTransferLayer(IOLayer *layer) | |||
7 | 16 | ||
8 | FileTransferLayer::~FileTransferLayer() { | 17 | 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() { |
11 | return m_layer; | 43 | return m_layer; |
12 | } | 44 | } |
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 | } | ||
diff --git a/noncore/apps/opie-console/file_layer.h b/noncore/apps/opie-console/file_layer.h index 035e125..71a0c82 100644 --- a/noncore/apps/opie-console/file_layer.h +++ b/noncore/apps/opie-console/file_layer.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define OPIE_FILE_LAYER_H | 2 | #define OPIE_FILE_LAYER_H |
3 | 3 | ||
4 | #include "io_layer.h" | 4 | #include "io_layer.h" |
5 | #include <opie/oprocess.h> | ||
5 | 6 | ||
6 | class QFile; | 7 | class QFile; |
7 | /** | 8 | /** |
@@ -21,12 +22,13 @@ public slots: | |||
21 | * send a file over the layer | 22 | * send a file over the layer |
22 | */ | 23 | */ |
23 | virtual void sendFile( const QString& file ) = 0; | 24 | virtual void sendFile( const QString& file ) = 0; |
24 | |||
25 | /** | ||
26 | * convience method | ||
27 | */ | ||
28 | virtual void sendFile( const QFile& ) = 0; | 25 | virtual void sendFile( const QFile& ) = 0; |
29 | 26 | ||
27 | private slots: | ||
28 | void SzRecievedStdout(OProcess *, char *, int); | ||
29 | void SzRecievedStderr(OProcess *, char *, int); | ||
30 | void recievedStdin(QByteArray &); | ||
31 | |||
30 | signals: | 32 | signals: |
31 | /** | 33 | /** |
32 | * sent the file | 34 | * sent the file |
@@ -50,6 +52,7 @@ protected: | |||
50 | 52 | ||
51 | private: | 53 | private: |
52 | IOLayer* m_layer; | 54 | IOLayer* m_layer; |
55 | OProcess *proc; | ||
53 | 56 | ||
54 | }; | 57 | }; |
55 | 58 | ||