-rw-r--r-- | core/obex/obexhandler.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/core/obex/obexhandler.cpp b/core/obex/obexhandler.cpp new file mode 100644 index 0000000..f71a233 --- a/dev/null +++ b/core/obex/obexhandler.cpp | |||
@@ -0,0 +1,65 @@ | |||
1 | #include <qcopchannel_qws.h> | ||
2 | |||
3 | #include <qpe/qcopenvelope_qws.h> | ||
4 | |||
5 | #include "obexsend.h" | ||
6 | #include "receiver.h" | ||
7 | #include "obexhandler.h" | ||
8 | |||
9 | using namespace OpieObex; | ||
10 | |||
11 | ObexHandler::ObexHandler() { | ||
12 | m_wasRec = false; | ||
13 | m_sender = 0l; | ||
14 | m_receiver = 0l; | ||
15 | QCopChannel* chan = new QCopChannel("QPE/Obex"); | ||
16 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | ||
17 | this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) ); | ||
18 | } | ||
19 | ObexHandler::~ObexHandler() { | ||
20 | delete m_sender; | ||
21 | delete m_receiver; | ||
22 | } | ||
23 | void ObexHandler::doSend(const QString& str, const QString& desc) { | ||
24 | delete m_sender; | ||
25 | m_sender = new SendWidget; | ||
26 | m_sender->raise(); | ||
27 | m_sender->showMaximized(); | ||
28 | connect(m_sender, SIGNAL(done() ), | ||
29 | this, SLOT(slotSent() ) ); | ||
30 | m_sender->send( str, desc ); | ||
31 | } | ||
32 | void ObexHandler::doReceive(bool b) { | ||
33 | if (m_receiver && b ) return; // we should enable receiver and it is on | ||
34 | else if (!m_receiver && !b ) return; // we should disbale receiver and it is off | ||
35 | else if (m_receiver && !b ) { | ||
36 | delete m_receiver; | ||
37 | m_receiver=0; | ||
38 | }else if (!m_receiver && b ) { | ||
39 | m_receiver= new Receiver; | ||
40 | } | ||
41 | } | ||
42 | void ObexHandler::slotSent() { | ||
43 | QString file = m_sender->file(); | ||
44 | delete m_sender; | ||
45 | m_sender = 0; | ||
46 | QCopEnvelope e ("QPE/Obex", "done(QString)" ); | ||
47 | e << file; | ||
48 | doReceive(m_wasRec ); | ||
49 | m_wasRec = false; | ||
50 | } | ||
51 | void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { | ||
52 | QDataStream stream( data, IO_ReadOnly ); | ||
53 | if ( msg == "send(QString,QString,QString)" ) { | ||
54 | QString name, desc; | ||
55 | stream >> name; | ||
56 | stream >> desc; | ||
57 | m_wasRec = (m_receiver != 0 ); | ||
58 | doReceive( false ); | ||
59 | doSend(name, desc); | ||
60 | }else if (msg == "receive(int)") { | ||
61 | int rec; | ||
62 | stream >> rec; | ||
63 | doReceive(rec); | ||
64 | } | ||
65 | } | ||