summaryrefslogtreecommitdiff
authorzecke <zecke>2002-06-13 20:33:24 (UTC)
committer zecke <zecke>2002-06-13 20:33:24 (UTC)
commit21ad567831e0be83156d5023d93aac42a60a2af3 (patch) (side-by-side diff)
treec7b0094910e4a82cd2d2b738f2c88cd7eddfce26
parented10b73df98c1b4c41a0b940e4f8729fe28c2b8a (diff)
downloadopie-21ad567831e0be83156d5023d93aac42a60a2af3.zip
opie-21ad567831e0be83156d5023d93aac42a60a2af3.tar.gz
opie-21ad567831e0be83156d5023d93aac42a60a2af3.tar.bz2
OBEX receiving is supporte
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/obex/obeximpl.cc40
-rw-r--r--core/applets/obex/obeximpl.h4
2 files changed, 38 insertions, 6 deletions
diff --git a/core/applets/obex/obeximpl.cc b/core/applets/obex/obeximpl.cc
index 0c137af..1a1c922 100644
--- a/core/applets/obex/obeximpl.cc
+++ b/core/applets/obex/obeximpl.cc
@@ -1,106 +1,136 @@
#include <qdatastream.h>
#include <qmessagebox.h>
+
#include <qpe/qcom.h>
+#include <qpe/applnk.h>
+
#include <qlabel.h>
#include "obex.h"
#include "obeximpl.h"
using namespace OpieObex;
ObexImpl::ObexImpl( )
: QObject() {
// register to a channel
qWarning( "c'tor" );
m_obex = new Obex(this, "obex");
m_sendgui = new ObexDlg();
m_recvgui = new ObexInc();
m_chan = new QCopChannel("QPE/Obex" );
connect(m_chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
this, SLOT(slotMessage(const QCString&, const QByteArray&) ) );
+ connect(m_obex, SIGNAL(receivedFile(const QString& ) ),
+ this, SLOT(slotReceivedFile(const QString& ) ) );
}
ObexImpl::~ObexImpl() {
delete m_obex;
delete m_chan;
delete m_sendgui;
}
QRESULT ObexImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
*iface = 0;
if( uuid == IID_QUnknown )
*iface = this;
else if( uuid == IID_ObexInterface )
*iface = this;
qWarning("query" );
if(*iface )
(*iface)->addRef();
return QS_OK;
}
void ObexImpl::slotMessage( const QCString& msg, const QByteArray&data ) {
QDataStream stream( data, IO_ReadOnly );
qWarning("Message %s", msg.data() );
if(msg == "send(QString,QString,QString)" ) {
QString desc;
stream >> desc;
- QString filename;
- stream >> filename;
+ stream >> m_name;
m_sendgui->raise(); // should be on top
m_sendgui->showMaximized();
- m_sendgui->lblPath->setText(filename);
+ m_sendgui->lblPath->setText(m_name);
connect( (QObject*)m_sendgui->PushButton2, SIGNAL(clicked()),
this, SLOT(slotCancelSend()));
- m_obex->send(filename );
+ m_obex->send(m_name );
connect( (QObject*)m_obex, SIGNAL( sent() ), this,
SLOT( slotSent() ) );
+ connect( (QObject*)m_obex, SIGNAL( error(int) ), this,
+ SLOT( slotSent() ) );
}else if(msg == "receive(int)" ) { // open a GUI
m_recvgui->showMaximized();
int receiveD = 0;
stream >> receiveD;
if ( receiveD == 1)
m_obex->receive();
else
m_obex->setReceiveEnabled( false );
} else if (msg =="done(QString)") {
QString text;
stream >> text;
m_sendgui->lblPath->setText(tr("Done transfering " + text));
}
}
void ObexImpl::slotCancelSend() {
// cancel sync process too
//m_obex->cancel(); // not ready yet
m_sendgui->hide();
}
void ObexImpl::slotDone(bool) {
QCopEnvelope e ("QPE/Obex", "done(QString)" ); //but this into a slot
- e << "Done!";
+ e << m_name;
}
void ObexImpl::slotSent() {
m_sendgui->lblPath->setText("Done!");
m_sendgui->hide();
}
void ObexImpl::slotError( int errorCode) {
QString errorString = "";
if (errorCode == -1) {
errorString = "test";
}
qDebug("Error: " + errorString);
m_sendgui->hide();
}
+// Received a file via beam
+// check for mime type and then either
+// add to App via setDocument
+void ObexImpl::slotReceivedFile( const QString &fileName ) {
+ qWarning("filename %s", fileName.latin1() );
+ DocLnk lnk( fileName );
+ QString exec = lnk.exec();
+ qWarning("executing %s", exec.latin1() );
+ if ( exec.isEmpty() || exec == "" ) {
+ qWarning("empty");
+ if ( fileName.right(4) == ".vcf" )
+ exec = "addressbook";
+ else if ( fileName.right(4) == ".vcs" ) {
+ exec = "datebook";
+ }
+ } // now prompt and then add it
+ QCString str= "QPE/Application/";
+ str += exec.latin1();
+ qWarning("channel %s", str.data() );
+ QCopEnvelope e(str , "setDocument(QString)" );
+ e << fileName;
+
+}
+
Q_EXPORT_INTERFACE()
{
Q_CREATE_INSTANCE( ObexImpl )
}
diff --git a/core/applets/obex/obeximpl.h b/core/applets/obex/obeximpl.h
index 4e5109f..8d10cf1 100644
--- a/core/applets/obex/obeximpl.h
+++ b/core/applets/obex/obeximpl.h
@@ -1,36 +1,38 @@
#ifndef OpieObexImpl_H
#define OpieObexImpl_H
#include <qobject.h>
#include "../obexinterface.h"
#include "obexdlg.h"
#include "obexinc.h"
#include <qpe/qcopenvelope_qws.h>
namespace OpieObex {
class Obex;
class ObexImpl : public QObject, public ObexInterface {
Q_OBJECT
public:
ObexImpl();
virtual ~ObexImpl();
QRESULT queryInterface( const QUuid&, QUnknownInterface** );
Q_REFCOUNT // for reference counting (macro )
private:
ulong ref;
Obex* m_obex; // obex lib
QCopChannel *m_chan;
ObexDlg *m_sendgui;
ObexInc *m_recvgui;
+ QString m_name;
private slots:
void slotCancelSend();
void slotMessage( const QCString&, const QByteArray& );
void slotError(int );
// void slotCurrentTry( unsigned int ); */
void slotDone(bool);
- //void slotReceivedFile(const QString & );
+ void slotReceivedFile(const QString & );
void slotSent();
+
};
};
#endif