summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/obex/obex.cc11
-rw-r--r--core/applets/obex/obeximpl.cc3
2 files changed, 11 insertions, 3 deletions
diff --git a/core/applets/obex/obex.cc b/core/applets/obex/obex.cc
index 582ebbc..f35d57a 100644
--- a/core/applets/obex/obex.cc
+++ b/core/applets/obex/obex.cc
@@ -1,119 +1,126 @@
1 1
2#include <qapplication.h>
2 3
3#include <opie/oprocess.h> 4#include <opie/oprocess.h>
4#include "obex.h" 5#include "obex.h"
5 6
6using namespace OpieObex; 7using namespace OpieObex;
7 8
8Obex::Obex( QObject *parent, const char* name ) 9Obex::Obex( QObject *parent, const char* name )
9 : QObject(parent, name ) 10 : QObject(parent, name )
10{ 11{
11 m_rec = 0; 12 m_rec = 0;
12 m_send=0; 13 m_send=0;
13 m_count = 0; 14 m_count = 0;
14}; 15};
15Obex::~Obex() { 16Obex::~Obex() {
16 delete m_rec; 17 delete m_rec;
17 delete m_send; 18 delete m_send;
18} 19}
19void Obex::receive() { 20void Obex::receive() {
21 qWarning("Receive" );
20 m_rec = new OProcess(); 22 m_rec = new OProcess();
21 *m_rec << "irobex_palm3"; 23 *m_rec << "irobex_palm3";
22 // connect to the necessary slots 24 // connect to the necessary slots
23 connect(m_rec, SIGNAL(processExited(OProcess*) ), 25 connect(m_rec, SIGNAL(processExited(OProcess*) ),
24 this, SLOT(slotExited(OProcess*) ) ); 26 this, SLOT(slotExited(OProcess*) ) );
25 27
26 connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ), 28 connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
27 this, SLOT(slotStdOut(OProcess*, char*, int) ) ); 29 this, SLOT(slotStdOut(OProcess*, char*, int) ) );
28 30
29 if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { 31 if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
30 qWarning("could not start :("); 32 qWarning("could not start :(");
31 emit done( false ); 33 emit done( false );
32 } 34 }
33 emit currentTry(m_count ); 35 emit currentTry(m_count );
34 36
35} 37}
36void Obex::send( const QString& fileName) { 38void Obex::send( const QString& fileName) {
37 m_count = 0; 39 m_count = 0;
38 m_file = fileName; 40 m_file = fileName;
39 sendNow(); 41 sendNow();
40} 42}
41void Obex::sendNow(){ 43void Obex::sendNow(){
42 if ( m_count >= 15 ) { // could not send 44 if ( m_count >= 25 ) { // could not send
43 emit error(-1 ); 45 emit error(-1 );
46 return;
44 } 47 }
45 // OProcess inititialisation 48 // OProcess inititialisation
46 m_send = new OProcess(); 49 m_send = new OProcess();
47 *m_send << "irobex_palm3"; 50 *m_send << "irobex_palm3";
48 *m_send << m_file; 51 *m_send << m_file;
49 52
50 // connect to slots Exited and and StdOut 53 // connect to slots Exited and and StdOut
51 connect(m_send, SIGNAL(processExited(OProcess*) ), 54 connect(m_send, SIGNAL(processExited(OProcess*) ),
52 this, SLOT(slotExited(OProcess*)) ); 55 this, SLOT(slotExited(OProcess*)) );
53 connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )), 56 connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )),
54 this, SLOT(slotStdOut(OProcess*, char*, int) ) ); 57 this, SLOT(slotStdOut(OProcess*, char*, int) ) );
55 // now start it 58 // now start it
56 if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) { 59 if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) {
57 m_count = 15; 60 qWarning("could not send" );
61 m_count = 25;
58 emit error(-1 ); 62 emit error(-1 );
59 } 63 }
60 // end 64 // end
61 m_count++; 65 m_count++;
62 emit currentTry( m_count ); 66 emit currentTry( m_count );
63} 67}
64 68
65void Obex::slotExited(OProcess* proc ){ 69void Obex::slotExited(OProcess* proc ){
66 if (proc == m_rec ) { // recieve process 70 if (proc == m_rec ) { // recieve process
67 recieved(); 71 recieved();
68 }else if ( proc == m_send ) { 72 }else if ( proc == m_send ) {
69 sendEnd(); 73 sendEnd();
70 } 74 }
71} 75}
72void Obex::slotStdOut(OProcess* proc, char* buf, int len){ 76void Obex::slotStdOut(OProcess* proc, char* buf, int len){
73 if ( proc == m_rec ) { // only recieve 77 if ( proc == m_rec ) { // only recieve
74 QCString cstring( buf, len ); 78 QCString cstring( buf, len );
75 m_outp.append( cstring.data() ); 79 m_outp.append( cstring.data() );
76 } 80 }
77} 81}
78 82
79void Obex::recieved() { 83void Obex::recieved() {
80 if (m_rec->normalExit() ) { 84 if (m_rec->normalExit() ) {
81 if ( m_rec->exitStatus() == 0 ) { // we got one 85 if ( m_rec->exitStatus() == 0 ) { // we got one
82 QString filename = parseOut(); 86 QString filename = parseOut();
83 emit receivedFile( filename ); 87 emit receivedFile( filename );
84 } 88 }
85 }else{ 89 }else{
86 emit error(-1); 90 emit error(-1);
87 }; 91 };
88 delete m_rec; 92 delete m_rec;
89} 93}
90void Obex::sendEnd() { 94void Obex::sendEnd() {
91 if (m_send->normalExit() ) { 95 if (m_send->normalExit() ) {
92 if ( m_send->exitStatus() == 0 ) { 96 if ( m_send->exitStatus() == 0 ) {
93 delete m_send; 97 delete m_send;
94 m_send=0; 98 m_send=0;
99 qWarning("done" );
95 emit sent(); 100 emit sent();
96 }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready 101 }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready
97 // let's try it again 102 // let's try it again
98 delete m_send; 103 delete m_send;
99 m_send = 0; 104 m_send = 0;
105 qWarning("try sending again" );
100 sendNow(); 106 sendNow();
101 } 107 }
102 }else { 108 }else {
103 emit error( -1 ); 109 emit error( -1 );
104 delete m_send; 110 delete m_send;
105 m_send = 0; 111 m_send = 0;
106 } 112 }
107} 113}
108QString Obex::parseOut( ){ 114QString Obex::parseOut( ){
109 QString path; 115 QString path;
110 QStringList list = QStringList::split("\n", m_outp); 116 QStringList list = QStringList::split("\n", m_outp);
111 QStringList::Iterator it; 117 QStringList::Iterator it;
112 for (it = list.begin(); it != list.end(); ++it ) { 118 for (it = list.begin(); it != list.end(); ++it ) {
113 if ( (*it).startsWith("Wrote" ) ) { 119 if ( (*it).startsWith("Wrote" ) ) {
114 QStringList pathes = QStringList::split(' ', (*it) ); 120 QStringList pathes = QStringList::split(' ', (*it) );
115 path = pathes[1]; 121 path = pathes[1];
122 qWarning("path %s", path.latin1() );
116 } 123 }
117 } 124 }
118 return path; 125 return path;
119} 126}
diff --git a/core/applets/obex/obeximpl.cc b/core/applets/obex/obeximpl.cc
index fa2a30a..82ff1a1 100644
--- a/core/applets/obex/obeximpl.cc
+++ b/core/applets/obex/obeximpl.cc
@@ -1,57 +1,58 @@
1 1
2#include <qdatastream.h> 2#include <qdatastream.h>
3#include <qpe/qcom.h> 3#include <qpe/qcom.h>
4 4
5#include "obex.h" 5#include "obex.h"
6#include "obeximpl.h" 6#include "obeximpl.h"
7 7
8 8
9 9
10using namespace OpieObex; 10using namespace OpieObex;
11 11
12ObexImpl::ObexImpl( ) 12ObexImpl::ObexImpl( )
13 : QObject() { 13 : QObject() {
14 // register to a channel 14 // register to a channel
15 qWarning( "c'tor" ); 15 qWarning( "c'tor" );
16 m_obex = new Obex(this, "obex"); 16 m_obex = new Obex(this, "obex");
17 m_chan = new QCopChannel("QPE/Obex" ); 17 m_chan = new QCopChannel("QPE/Obex" );
18 connect(m_chan, SIGNAL(received(const QCString&, const QByteArray& ) ), 18 connect(m_chan, SIGNAL(received(const QCString&, const QByteArray& ) ),
19 this, SLOT(slotMessage(const QCString&, const QByteArray&) ) ); 19 this, SLOT(slotMessage(const QCString&, const QByteArray&) ) );
20} 20}
21ObexImpl::~ObexImpl() { 21ObexImpl::~ObexImpl() {
22 delete m_obex; 22 delete m_obex;
23 delete m_chan; 23 delete m_chan;
24} 24}
25QRESULT ObexImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { 25QRESULT ObexImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
26 *iface = 0; 26 *iface = 0;
27 if( uuid == IID_QUnknown ) 27 if( uuid == IID_QUnknown )
28 *iface = this; 28 *iface = this;
29 else if( uuid == IID_ObexInterface ) 29 else if( uuid == IID_ObexInterface )
30 *iface = this; 30 *iface = this;
31 31
32 qWarning("query" ); 32 qWarning("query" );
33 if(*iface ) 33 if(*iface )
34 (*iface)->addRef(); 34 (*iface)->addRef();
35 return QS_OK; 35 return QS_OK;
36 36
37} 37}
38void ObexImpl::slotMessage( const QCString& msg, const QByteArray&data ) { 38void ObexImpl::slotMessage( const QCString& msg, const QByteArray&data ) {
39 QDataStream stream( data, IO_ReadOnly ); 39 QDataStream stream( data, IO_ReadOnly );
40 qWarning("Message %s", msg.data() ); 40 qWarning("Message %s", msg.data() );
41 if(msg == "send(QString,QString,QString)" ) { 41 if(msg == "send(QString,QString,QString)" ) {
42 QString desc; 42 QString desc;
43 stream >> desc; 43 stream >> desc;
44 QString filename; 44 QString filename;
45 stream >> filename; 45 stream >> filename;
46 m_obex->send(filename ); 46 m_obex->send(filename );
47 QCopEnvelope e ("QPE/Obex", "done(QString)" ); 47 QCopEnvelope e ("QPE/Obex", "done(QString)" );
48 e << filename; 48 e << filename;
49 }else if(msg == "receive(bool)" ) { 49 }else if(msg == "receive(bool)" ) { // open a GUI
50 m_obex->receive();
50 ; 51 ;
51 } 52 }
52} 53}
53 54
54Q_EXPORT_INTERFACE() 55Q_EXPORT_INTERFACE()
55{ 56{
56 Q_CREATE_INSTANCE( ObexImpl ) 57 Q_CREATE_INSTANCE( ObexImpl )
57} 58}