summaryrefslogtreecommitdiff
path: root/core/obex/obexhandler.cpp
authorzecke <zecke>2003-02-16 15:49:02 (UTC)
committer zecke <zecke>2003-02-16 15:49:02 (UTC)
commit30a098530260176ac20d75ba6cb7abfb3d998c13 (patch) (side-by-side diff)
treeee5c08ca67fa00574414153921ab2de654c60421 /core/obex/obexhandler.cpp
parent7fab90d46144843d32e476ada8d0a5f40f50aa60 (diff)
downloadopie-30a098530260176ac20d75ba6cb7abfb3d998c13.zip
opie-30a098530260176ac20d75ba6cb7abfb3d998c13.tar.gz
opie-30a098530260176ac20d75ba6cb7abfb3d998c13.tar.bz2
disable snd in IrDaApplet it hangs on my machine..
Remove the hacky OBEX Implementation Add a more cleaned up more appealing (not yet working) version which will even be able to do OBEX over Bluetooth in the future -It handles receive better let's you choose what to do with custom files and created a DocLnk -Send lets you beam to multiple devices this needs the IrDa Applet to be present
Diffstat (limited to 'core/obex/obexhandler.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obexhandler.cpp65
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 @@
+#include <qcopchannel_qws.h>
+
+#include <qpe/qcopenvelope_qws.h>
+
+#include "obexsend.h"
+#include "receiver.h"
+#include "obexhandler.h"
+
+using namespace OpieObex;
+
+ObexHandler::ObexHandler() {
+ m_wasRec = false;
+ m_sender = 0l;
+ m_receiver = 0l;
+ QCopChannel* chan = new QCopChannel("QPE/Obex");
+ connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
+ this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) );
+}
+ObexHandler::~ObexHandler() {
+ delete m_sender;
+ delete m_receiver;
+}
+void ObexHandler::doSend(const QString& str, const QString& desc) {
+ delete m_sender;
+ m_sender = new SendWidget;
+ m_sender->raise();
+ m_sender->showMaximized();
+ connect(m_sender, SIGNAL(done() ),
+ this, SLOT(slotSent() ) );
+ m_sender->send( str, desc );
+}
+void ObexHandler::doReceive(bool b) {
+ if (m_receiver && b ) return; // we should enable receiver and it is on
+ else if (!m_receiver && !b ) return; // we should disbale receiver and it is off
+ else if (m_receiver && !b ) {
+ delete m_receiver;
+ m_receiver=0;
+ }else if (!m_receiver && b ) {
+ m_receiver= new Receiver;
+ }
+}
+void ObexHandler::slotSent() {
+ QString file = m_sender->file();
+ delete m_sender;
+ m_sender = 0;
+ QCopEnvelope e ("QPE/Obex", "done(QString)" );
+ e << file;
+ doReceive(m_wasRec );
+ m_wasRec = false;
+}
+void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) {
+ QDataStream stream( data, IO_ReadOnly );
+ if ( msg == "send(QString,QString,QString)" ) {
+ QString name, desc;
+ stream >> name;
+ stream >> desc;
+ m_wasRec = (m_receiver != 0 );
+ doReceive( false );
+ doSend(name, desc);
+ }else if (msg == "receive(int)") {
+ int rec;
+ stream >> rec;
+ doReceive(rec);
+ }
+}