-rw-r--r-- | core/obex/obex.cc | 5 | ||||
-rw-r--r-- | core/obex/obexhandler.cpp | 2 | ||||
-rw-r--r-- | core/obex/obexsend.cpp | 19 |
3 files changed, 15 insertions, 11 deletions
diff --git a/core/obex/obex.cc b/core/obex/obex.cc index 83d1faf..92cd317 100644 --- a/core/obex/obex.cc +++ b/core/obex/obex.cc | |||
@@ -1,195 +1,196 @@ | |||
1 | 1 | ||
2 | #include <qapplication.h> | 2 | #include <qapplication.h> |
3 | #include <qfile.h> | ||
3 | #include <qmessagebox.h> | 4 | #include <qmessagebox.h> |
4 | #include <qpe/qcopenvelope_qws.h> | 5 | #include <qpe/qcopenvelope_qws.h> |
5 | #include <opie/oprocess.h> | 6 | #include <opie/oprocess.h> |
6 | #include "obex.h" | 7 | #include "obex.h" |
7 | 8 | ||
8 | using namespace OpieObex; | 9 | using namespace OpieObex; |
9 | 10 | ||
10 | Obex::Obex( QObject *parent, const char* name ) | 11 | Obex::Obex( QObject *parent, const char* name ) |
11 | : QObject(parent, name ) | 12 | : QObject(parent, name ) |
12 | { | 13 | { |
13 | m_rec = 0; | 14 | m_rec = 0; |
14 | m_send=0; | 15 | m_send=0; |
15 | m_count = 0; | 16 | m_count = 0; |
16 | m_receive = false; | 17 | m_receive = false; |
17 | connect( this, SIGNAL(error(int) ), // for recovering to receive | 18 | connect( this, SIGNAL(error(int) ), // for recovering to receive |
18 | SLOT(slotError() ) ); | 19 | SLOT(slotError() ) ); |
19 | connect( this, SIGNAL(sent() ), | 20 | connect( this, SIGNAL(sent() ), |
20 | SLOT(slotError() ) ); | 21 | SLOT(slotError() ) ); |
21 | }; | 22 | }; |
22 | Obex::~Obex() { | 23 | Obex::~Obex() { |
23 | delete m_rec; | 24 | delete m_rec; |
24 | delete m_send; | 25 | delete m_send; |
25 | } | 26 | } |
26 | void Obex::receive() { | 27 | void Obex::receive() { |
27 | m_receive = true; | 28 | m_receive = true; |
28 | m_outp = QString::null; | 29 | m_outp = QString::null; |
29 | qWarning("Receive" ); | 30 | qWarning("Receive" ); |
30 | m_rec = new OProcess(); | 31 | m_rec = new OProcess(); |
31 | *m_rec << "irobex_palm3"; | 32 | *m_rec << "irobex_palm3"; |
32 | // connect to the necessary slots | 33 | // connect to the necessary slots |
33 | connect(m_rec, SIGNAL(processExited(OProcess*) ), | 34 | connect(m_rec, SIGNAL(processExited(OProcess*) ), |
34 | this, SLOT(slotExited(OProcess*) ) ); | 35 | this, SLOT(slotExited(OProcess*) ) ); |
35 | 36 | ||
36 | connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ), | 37 | connect(m_rec, SIGNAL(receivedStdout(OProcess*, char*, int ) ), |
37 | this, SLOT(slotStdOut(OProcess*, char*, int) ) ); | 38 | this, SLOT(slotStdOut(OProcess*, char*, int) ) ); |
38 | 39 | ||
39 | if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { | 40 | if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { |
40 | qWarning("could not start :("); | 41 | qWarning("could not start :("); |
41 | emit done( false ); | 42 | emit done( false ); |
42 | delete m_rec; | 43 | delete m_rec; |
43 | m_rec = 0; | 44 | m_rec = 0; |
44 | } | 45 | } |
45 | // emit currentTry(m_count ); | 46 | // emit currentTry(m_count ); |
46 | 47 | ||
47 | } | 48 | } |
48 | void Obex::send( const QString& fileName) { // if currently receiving stop it send receive | 49 | void Obex::send( const QString& fileName) { // if currently receiving stop it send receive |
49 | m_count = 0; | 50 | m_count = 0; |
50 | m_file = fileName; | 51 | m_file = fileName; |
51 | qWarning("send"); | 52 | qWarning("send %s", fileName.latin1() ); |
52 | if (m_rec != 0 ) { | 53 | if (m_rec != 0 ) { |
53 | qWarning("running"); | 54 | qWarning("running"); |
54 | if (m_rec->isRunning() ) { | 55 | if (m_rec->isRunning() ) { |
55 | emit error(-1 ); | 56 | emit error(-1 ); |
56 | qWarning("is running"); | 57 | qWarning("is running"); |
57 | delete m_rec; | 58 | delete m_rec; |
58 | m_rec = 0; | 59 | m_rec = 0; |
59 | 60 | ||
60 | }else{ | 61 | }else{ |
61 | qWarning("is not running"); | 62 | qWarning("is not running"); |
62 | emit error( -1 ); // we did not delete yet but it's not running slotExited is pending | 63 | emit error( -1 ); // we did not delete yet but it's not running slotExited is pending |
63 | return; | 64 | return; |
64 | } | 65 | } |
65 | } | 66 | } |
66 | sendNow(); | 67 | sendNow(); |
67 | } | 68 | } |
68 | void Obex::sendNow(){ | 69 | void Obex::sendNow(){ |
69 | qWarning("sendNow"); | 70 | qWarning("sendNow"); |
70 | if ( m_count >= 25 ) { // could not send | 71 | if ( m_count >= 25 ) { // could not send |
71 | emit error(-1 ); | 72 | emit error(-1 ); |
72 | emit sent(false); | 73 | emit sent(false); |
73 | return; | 74 | return; |
74 | } | 75 | } |
75 | // OProcess inititialisation | 76 | // OProcess inititialisation |
76 | m_send = new OProcess(); | 77 | m_send = new OProcess(); |
77 | *m_send << "irobex_palm3"; | 78 | *m_send << "irobex_palm3"; |
78 | *m_send << m_file; | 79 | *m_send << QFile::encodeName(m_file); |
79 | 80 | ||
80 | // connect to slots Exited and and StdOut | 81 | // connect to slots Exited and and StdOut |
81 | connect(m_send, SIGNAL(processExited(OProcess*) ), | 82 | connect(m_send, SIGNAL(processExited(OProcess*) ), |
82 | this, SLOT(slotExited(OProcess*)) ); | 83 | this, SLOT(slotExited(OProcess*)) ); |
83 | connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )), | 84 | connect(m_send, SIGNAL(receivedStdout(OProcess*, char*, int )), |
84 | this, SLOT(slotStdOut(OProcess*, char*, int) ) ); | 85 | this, SLOT(slotStdOut(OProcess*, char*, int) ) ); |
85 | 86 | ||
86 | // now start it | 87 | // now start it |
87 | if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) { | 88 | if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) { |
88 | qWarning("could not send" ); | 89 | qWarning("could not send" ); |
89 | m_count = 25; | 90 | m_count = 25; |
90 | emit error(-1 ); | 91 | emit error(-1 ); |
91 | delete m_send; | 92 | delete m_send; |
92 | m_send=0; | 93 | m_send=0; |
93 | } | 94 | } |
94 | // end | 95 | // end |
95 | m_count++; | 96 | m_count++; |
96 | emit currentTry( m_count ); | 97 | emit currentTry( m_count ); |
97 | } | 98 | } |
98 | 99 | ||
99 | void Obex::slotExited(OProcess* proc ){ | 100 | void Obex::slotExited(OProcess* proc ){ |
100 | if (proc == m_rec ) { // receive process | 101 | if (proc == m_rec ) { // receive process |
101 | received(); | 102 | received(); |
102 | }else if ( proc == m_send ) { | 103 | }else if ( proc == m_send ) { |
103 | sendEnd(); | 104 | sendEnd(); |
104 | } | 105 | } |
105 | } | 106 | } |
106 | void Obex::slotStdOut(OProcess* proc, char* buf, int len){ | 107 | void Obex::slotStdOut(OProcess* proc, char* buf, int len){ |
107 | if ( proc == m_rec ) { // only receive | 108 | if ( proc == m_rec ) { // only receive |
108 | QCString cstring( buf, len ); | 109 | QCString cstring( buf, len ); |
109 | m_outp.append( cstring.data() ); | 110 | m_outp.append( cstring.data() ); |
110 | } | 111 | } |
111 | } | 112 | } |
112 | 113 | ||
113 | void Obex::received() { | 114 | void Obex::received() { |
114 | if (m_rec->normalExit() ) { | 115 | if (m_rec->normalExit() ) { |
115 | if ( m_rec->exitStatus() == 0 ) { // we got one | 116 | if ( m_rec->exitStatus() == 0 ) { // we got one |
116 | QString filename = parseOut(); | 117 | QString filename = parseOut(); |
117 | qWarning("ACHTUNG"); | 118 | qWarning("ACHTUNG"); |
118 | emit receivedFile( filename ); | 119 | emit receivedFile( filename ); |
119 | } | 120 | } |
120 | }else{ | 121 | }else{ |
121 | emit done(false); | 122 | emit done(false); |
122 | }; | 123 | }; |
123 | delete m_rec; | 124 | delete m_rec; |
124 | m_rec = 0; | 125 | m_rec = 0; |
125 | receive(); | 126 | receive(); |
126 | } | 127 | } |
127 | 128 | ||
128 | void Obex::sendEnd() { | 129 | void Obex::sendEnd() { |
129 | if (m_send->normalExit() ) { | 130 | if (m_send->normalExit() ) { |
130 | if ( m_send->exitStatus() == 0 ) { | 131 | if ( m_send->exitStatus() == 0 ) { |
131 | delete m_send; | 132 | delete m_send; |
132 | m_send=0; | 133 | m_send=0; |
133 | qWarning("done" ); | 134 | qWarning("done" ); |
134 | emit sent(true); | 135 | emit sent(true); |
135 | }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready | 136 | }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready |
136 | // let's try it again | 137 | // let's try it again |
137 | delete m_send; | 138 | delete m_send; |
138 | m_send = 0; | 139 | m_send = 0; |
139 | qWarning("try sending again" ); | 140 | qWarning("try sending again" ); |
140 | sendNow(); | 141 | sendNow(); |
141 | } | 142 | } |
142 | }else { | 143 | }else { |
143 | emit error( -1 ); | 144 | emit error( -1 ); |
144 | delete m_send; | 145 | delete m_send; |
145 | m_send = 0; | 146 | m_send = 0; |
146 | } | 147 | } |
147 | } | 148 | } |
148 | QString Obex::parseOut( ){ | 149 | QString Obex::parseOut( ){ |
149 | QString path; | 150 | QString path; |
150 | QStringList list = QStringList::split("\n", m_outp); | 151 | QStringList list = QStringList::split("\n", m_outp); |
151 | QStringList::Iterator it; | 152 | QStringList::Iterator it; |
152 | for (it = list.begin(); it != list.end(); ++it ) { | 153 | for (it = list.begin(); it != list.end(); ++it ) { |
153 | if ( (*it).startsWith("Wrote" ) ) { | 154 | if ( (*it).startsWith("Wrote" ) ) { |
154 | int pos = (*it).findRev('(' ); | 155 | int pos = (*it).findRev('(' ); |
155 | if ( pos > 0 ) { | 156 | if ( pos > 0 ) { |
156 | qWarning( "%d %s", pos, (*it).mid(6 ).latin1() ) ; | 157 | qWarning( "%d %s", pos, (*it).mid(6 ).latin1() ) ; |
157 | qWarning("%d %d", (*it).length(), (*it).length()-pos ); | 158 | qWarning("%d %d", (*it).length(), (*it).length()-pos ); |
158 | 159 | ||
159 | path = (*it).remove( pos, (*it).length() - pos ); | 160 | path = (*it).remove( pos, (*it).length() - pos ); |
160 | qWarning("%s", path.latin1() ); | 161 | qWarning("%s", path.latin1() ); |
161 | path = path.mid(6 ); | 162 | path = path.mid(6 ); |
162 | path = path.stripWhiteSpace(); | 163 | path = path.stripWhiteSpace(); |
163 | qWarning("path %s", path.latin1() ); | 164 | qWarning("path %s", path.latin1() ); |
164 | } | 165 | } |
165 | } | 166 | } |
166 | } | 167 | } |
167 | return path; | 168 | return path; |
168 | } | 169 | } |
169 | /** | 170 | /** |
170 | * when sent is done slotError is called we will start receive again | 171 | * when sent is done slotError is called we will start receive again |
171 | */ | 172 | */ |
172 | void Obex::slotError() { | 173 | void Obex::slotError() { |
173 | qWarning("slotError"); | 174 | qWarning("slotError"); |
174 | if ( m_receive ) | 175 | if ( m_receive ) |
175 | receive(); | 176 | receive(); |
176 | }; | 177 | }; |
177 | void Obex::setReceiveEnabled( bool receive ) { | 178 | void Obex::setReceiveEnabled( bool receive ) { |
178 | if ( !receive ) { // | 179 | if ( !receive ) { // |
179 | m_receive = false; | 180 | m_receive = false; |
180 | shutDownReceive(); | 181 | shutDownReceive(); |
181 | } | 182 | } |
182 | } | 183 | } |
183 | 184 | ||
184 | void Obex::shutDownReceive() { | 185 | void Obex::shutDownReceive() { |
185 | if (m_rec != 0 ) { | 186 | if (m_rec != 0 ) { |
186 | qWarning("running"); | 187 | qWarning("running"); |
187 | if (m_rec->isRunning() ) { | 188 | if (m_rec->isRunning() ) { |
188 | emit error(-1 ); | 189 | emit error(-1 ); |
189 | qWarning("is running"); | 190 | qWarning("is running"); |
190 | delete m_rec; | 191 | delete m_rec; |
191 | m_rec = 0; | 192 | m_rec = 0; |
192 | } | 193 | } |
193 | } | 194 | } |
194 | 195 | ||
195 | } | 196 | } |
diff --git a/core/obex/obexhandler.cpp b/core/obex/obexhandler.cpp index f71a233..16e1c2f 100644 --- a/core/obex/obexhandler.cpp +++ b/core/obex/obexhandler.cpp | |||
@@ -1,65 +1,65 @@ | |||
1 | #include <qcopchannel_qws.h> | 1 | #include <qcopchannel_qws.h> |
2 | 2 | ||
3 | #include <qpe/qcopenvelope_qws.h> | 3 | #include <qpe/qcopenvelope_qws.h> |
4 | 4 | ||
5 | #include "obexsend.h" | 5 | #include "obexsend.h" |
6 | #include "receiver.h" | 6 | #include "receiver.h" |
7 | #include "obexhandler.h" | 7 | #include "obexhandler.h" |
8 | 8 | ||
9 | using namespace OpieObex; | 9 | using namespace OpieObex; |
10 | 10 | ||
11 | ObexHandler::ObexHandler() { | 11 | ObexHandler::ObexHandler() { |
12 | m_wasRec = false; | 12 | m_wasRec = false; |
13 | m_sender = 0l; | 13 | m_sender = 0l; |
14 | m_receiver = 0l; | 14 | m_receiver = 0l; |
15 | QCopChannel* chan = new QCopChannel("QPE/Obex"); | 15 | QCopChannel* chan = new QCopChannel("QPE/Obex"); |
16 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 16 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), |
17 | this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) ); | 17 | this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) ); |
18 | } | 18 | } |
19 | ObexHandler::~ObexHandler() { | 19 | ObexHandler::~ObexHandler() { |
20 | delete m_sender; | 20 | delete m_sender; |
21 | delete m_receiver; | 21 | delete m_receiver; |
22 | } | 22 | } |
23 | void ObexHandler::doSend(const QString& str, const QString& desc) { | 23 | void ObexHandler::doSend(const QString& str, const QString& desc) { |
24 | delete m_sender; | 24 | delete m_sender; |
25 | m_sender = new SendWidget; | 25 | m_sender = new SendWidget; |
26 | m_sender->raise(); | 26 | m_sender->raise(); |
27 | m_sender->showMaximized(); | 27 | m_sender->showMaximized(); |
28 | connect(m_sender, SIGNAL(done() ), | 28 | connect(m_sender, SIGNAL(done() ), |
29 | this, SLOT(slotSent() ) ); | 29 | this, SLOT(slotSent() ) ); |
30 | m_sender->send( str, desc ); | 30 | m_sender->send( str, desc ); |
31 | } | 31 | } |
32 | void ObexHandler::doReceive(bool b) { | 32 | void ObexHandler::doReceive(bool b) { |
33 | if (m_receiver && b ) return; // we should enable receiver and it is on | 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 | 34 | else if (!m_receiver && !b ) return; // we should disbale receiver and it is off |
35 | else if (m_receiver && !b ) { | 35 | else if (m_receiver && !b ) { |
36 | delete m_receiver; | 36 | delete m_receiver; |
37 | m_receiver=0; | 37 | m_receiver=0; |
38 | }else if (!m_receiver && b ) { | 38 | }else if (!m_receiver && b ) { |
39 | m_receiver= new Receiver; | 39 | m_receiver= new Receiver; |
40 | } | 40 | } |
41 | } | 41 | } |
42 | void ObexHandler::slotSent() { | 42 | void ObexHandler::slotSent() { |
43 | QString file = m_sender->file(); | 43 | QString file = m_sender->file(); |
44 | delete m_sender; | 44 | delete m_sender; |
45 | m_sender = 0; | 45 | m_sender = 0; |
46 | QCopEnvelope e ("QPE/Obex", "done(QString)" ); | 46 | QCopEnvelope e ("QPE/Obex", "done(QString)" ); |
47 | e << file; | 47 | e << file; |
48 | doReceive(m_wasRec ); | 48 | doReceive(m_wasRec ); |
49 | m_wasRec = false; | 49 | m_wasRec = false; |
50 | } | 50 | } |
51 | void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { | 51 | void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { |
52 | QDataStream stream( data, IO_ReadOnly ); | 52 | QDataStream stream( data, IO_ReadOnly ); |
53 | if ( msg == "send(QString,QString,QString)" ) { | 53 | if ( msg == "send(QString,QString,QString)" ) { |
54 | QString name, desc; | 54 | QString name, desc; |
55 | stream >> name; | 55 | stream >> name; |
56 | stream >> desc; | 56 | stream >> desc; |
57 | m_wasRec = (m_receiver != 0 ); | 57 | m_wasRec = (m_receiver != 0 ); |
58 | doReceive( false ); | 58 | doReceive( false ); |
59 | doSend(name, desc); | 59 | doSend(desc, name); |
60 | }else if (msg == "receive(int)") { | 60 | }else if (msg == "receive(int)") { |
61 | int rec; | 61 | int rec; |
62 | stream >> rec; | 62 | stream >> rec; |
63 | doReceive(rec); | 63 | doReceive(rec); |
64 | } | 64 | } |
65 | } | 65 | } |
diff --git a/core/obex/obexsend.cpp b/core/obex/obexsend.cpp index a2e4c16..d5ebd81 100644 --- a/core/obex/obexsend.cpp +++ b/core/obex/obexsend.cpp | |||
@@ -1,251 +1,254 @@ | |||
1 | #include <qpushbutton.h> | 1 | #include <qpushbutton.h> |
2 | #include <qlabel.h> | 2 | #include <qlabel.h> |
3 | #include <qhbox.h> | 3 | #include <qhbox.h> |
4 | #include <qlayout.h> | 4 | #include <qlayout.h> |
5 | #include <qtimer.h> | 5 | #include <qtimer.h> |
6 | 6 | ||
7 | #include <qcopchannel_qws.h> | 7 | #include <qcopchannel_qws.h> |
8 | 8 | ||
9 | #include <qpe/resource.h> | 9 | #include <qpe/resource.h> |
10 | #include <qpe/qcopenvelope_qws.h> | 10 | #include <qpe/qcopenvelope_qws.h> |
11 | 11 | ||
12 | #include "obex.h" | 12 | #include "obex.h" |
13 | #include "obexsend.h" | 13 | #include "obexsend.h" |
14 | 14 | ||
15 | using namespace OpieObex; | 15 | using namespace OpieObex; |
16 | 16 | ||
17 | 17 | ||
18 | SendWidget::SendWidget( QWidget* parent, const char* name ) | 18 | SendWidget::SendWidget( QWidget* parent, const char* name ) |
19 | : QWidget( parent, name ) { | 19 | : QWidget( parent, name ) { |
20 | initUI(); | 20 | initUI(); |
21 | } | 21 | } |
22 | SendWidget::~SendWidget() { | 22 | SendWidget::~SendWidget() { |
23 | } | 23 | } |
24 | void SendWidget::initUI() { | 24 | void SendWidget::initUI() { |
25 | m_obex = new Obex(this, "obex"); | 25 | m_obex = new Obex(this, "obex"); |
26 | connect(m_obex, SIGNAL(error(int) ), | 26 | connect(m_obex, SIGNAL(error(int) ), |
27 | this, SLOT(slotIrError(int) ) ); | 27 | this, SLOT(slotIrError(int) ) ); |
28 | connect(m_obex, SIGNAL(sent(bool) ), | 28 | connect(m_obex, SIGNAL(sent(bool) ), |
29 | this, SLOT(slotIrSent(bool) ) ); | 29 | this, SLOT(slotIrSent(bool) ) ); |
30 | connect(m_obex, SIGNAL(currentTry(unsigned int ) ), | 30 | connect(m_obex, SIGNAL(currentTry(unsigned int ) ), |
31 | this, SLOT(slotIrTry(unsigned int ) ) ); | 31 | this, SLOT(slotIrTry(unsigned int ) ) ); |
32 | 32 | ||
33 | QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this ); | 33 | QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this ); |
34 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 34 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), |
35 | this, SLOT(dispatchBt(const QCString&, const QByteArray& ) ) ); | 35 | this, SLOT(dispatchIrda(const QCString&, const QByteArray& ) ) ); |
36 | 36 | ||
37 | chan = new QCopChannel("QPE/BluetoothBack", this ); | 37 | chan = new QCopChannel("QPE/BluetoothBack", this ); |
38 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 38 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), |
39 | this, SLOT(dispatchIrda(const QCString&, const QByteArray& ) ) ); | 39 | this, SLOT(dispatchBt(const QCString&, const QByteArray& ) ) ); |
40 | 40 | ||
41 | QVBoxLayout* lay = new QVBoxLayout(this); | 41 | QVBoxLayout* lay = new QVBoxLayout(this); |
42 | 42 | ||
43 | QHBox* nameBox = new QHBox(this); | 43 | QHBox* nameBox = new QHBox(this); |
44 | QLabel* name = new QLabel(nameBox); | 44 | QLabel* name = new QLabel(nameBox); |
45 | name->setText( tr("<qt><h1>Sending:</h1></qt>") ); | 45 | name->setText( tr("<qt><h1>Sending:</h1></qt>") ); |
46 | name->setAlignment( AlignLeft | AlignTop ); | 46 | name->setAlignment( AlignLeft | AlignTop ); |
47 | m_lblFile = new QLabel(nameBox); | 47 | m_lblFile = new QLabel(nameBox); |
48 | lay->addWidget(nameBox, 0); | 48 | lay->addWidget(nameBox, 0); |
49 | 49 | ||
50 | QFrame* frame = new QFrame(this); | 50 | QFrame* frame = new QFrame(this); |
51 | frame->setFrameShape( QFrame::HLine ); | 51 | frame->setFrameShape( QFrame::HLine ); |
52 | frame->setFrameShadow( QFrame::Sunken ); | 52 | frame->setFrameShadow( QFrame::Sunken ); |
53 | lay->addWidget(frame, 10); | 53 | lay->addWidget(frame, 10); |
54 | 54 | ||
55 | QLabel* devices = new QLabel(this); | 55 | QLabel* devices = new QLabel(this); |
56 | devices->setText("<qt><b>Devices:</b></qt>"); | 56 | devices->setText("<qt><b>Devices:</b></qt>"); |
57 | devices->setAlignment( AlignLeft | AlignTop ); | 57 | devices->setAlignment( AlignLeft | AlignTop ); |
58 | lay->addWidget( devices,10 ); | 58 | lay->addWidget( devices,10 ); |
59 | 59 | ||
60 | m_devBox = new DeviceBox(this); | 60 | m_devBox = new DeviceBox(this); |
61 | lay->addWidget( m_devBox, 50 ); | 61 | lay->addWidget( m_devBox, 50 ); |
62 | connect(m_devBox, SIGNAL(selectedDevice(const QString&, int ) ), | 62 | connect(m_devBox, SIGNAL(selectedDevice(const QString&, int ) ), |
63 | this, SLOT(slotSelectedDevice(const QString&, int) ) ); | 63 | this, SLOT(slotSelectedDevice(const QString&, int) ) ); |
64 | 64 | ||
65 | QPushButton *but = new QPushButton(this); | 65 | QPushButton *but = new QPushButton(this); |
66 | but->setText(tr("Done") ); | 66 | but->setText(tr("Done") ); |
67 | connect(but, SIGNAL(clicked() ), | 67 | connect(but, SIGNAL(clicked() ), |
68 | this, SLOT(slotDone() ) ); | 68 | this, SLOT(slotDone() ) ); |
69 | 69 | ||
70 | lay->addWidget( but ); | 70 | lay->addWidget( but ); |
71 | m_lay = lay; | 71 | m_lay = lay; |
72 | 72 | ||
73 | // QT does not like if you add items to an layout which already exits.... | 73 | // QT does not like if you add items to an layout which already exits.... |
74 | // and was layouted invalidate() does not help too | 74 | // and was layouted invalidate() does not help too |
75 | // so we use RichText.... | 75 | // so we use RichText.... |
76 | } | 76 | } |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * in send we'll first set everything up | 79 | * in send we'll first set everything up |
80 | * and then wait for a list of devices. | 80 | * and then wait for a list of devices. |
81 | */ | 81 | */ |
82 | void SendWidget::send( const QString& file, const QString& desc ) { | 82 | void SendWidget::send( const QString& file, const QString& desc ) { |
83 | m_file = file; | 83 | m_file = file; |
84 | m_irDa.clear(); | 84 | m_irDa.clear(); |
85 | m_start = 0; | 85 | m_start = 0; |
86 | m_lblFile->setText(desc.isEmpty() ? file : desc ); | 86 | m_lblFile->setText(desc.isEmpty() ? file : desc ); |
87 | 87 | ||
88 | if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { | 88 | if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { |
89 | m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); | 89 | m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); |
90 | m_start++; | 90 | m_start++; |
91 | }else | 91 | }else |
92 | m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); | 92 | m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); |
93 | 93 | ||
94 | if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { | 94 | if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { |
95 | m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); | 95 | m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); |
96 | m_start++; | 96 | m_start++; |
97 | }else | 97 | }else |
98 | m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); | 98 | m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); |
99 | 99 | ||
100 | if (m_start != 2 ) { | 100 | if (m_start != 2 ) { |
101 | QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); | 101 | QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); |
102 | QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); | 102 | QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); |
103 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); | 103 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); |
104 | QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); | 104 | QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); |
105 | } | 105 | } |
106 | QTimer::singleShot(5000, this, SLOT(testIt() ) ); | ||
107 | } | 106 | } |
108 | void SendWidget::slotIrDaDevices( const QStringList& list) { | 107 | void SendWidget::slotIrDaDevices( const QStringList& list) { |
108 | qWarning("slot it irda devices "); | ||
109 | m_irDa = list; | 109 | m_irDa = list; |
110 | m_start = 0; | 110 | m_start = 0; |
111 | for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) | 111 | for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) |
112 | m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); | 112 | m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); |
113 | m_devBox->removeDevice( tr("Search for IrDa Devices.") ); | 113 | |
114 | m_devBox->removeDevice( tr("Searching for IrDa Devices.") ); | ||
114 | 115 | ||
115 | slotStartIrda(); | 116 | slotStartIrda(); |
116 | } | 117 | } |
117 | void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { | 118 | void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { |
118 | m_bt = str; | 119 | m_bt = str; |
119 | for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { | 120 | for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { |
120 | m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); | 121 | m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); |
121 | } | 122 | } |
122 | m_devBox->removeDevice( tr("Searching for bluetooth Devices.") ); | 123 | m_devBox->removeDevice( tr("Searching for bluetooth Devices.") ); |
123 | } | 124 | } |
124 | void SendWidget::slotSelectedDevice( const QString& name, int dev ) { | 125 | void SendWidget::slotSelectedDevice( const QString& name, int dev ) { |
125 | qWarning("Start beam? %s %d", name.latin1(), dev ); | 126 | qWarning("Start beam? %s %d", name.latin1(), dev ); |
126 | if ( name == tr("Search again for IrDa.") ) { | 127 | if ( name == tr("Search again for IrDa.") ) { |
127 | for (QStringList::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) | 128 | for (QStringList::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) |
128 | m_devBox->removeDevice( (*it) ); | 129 | m_devBox->removeDevice( (*it) ); |
130 | |||
129 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); | 131 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); |
130 | } | 132 | } |
131 | } | 133 | } |
132 | void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { | 134 | void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { |
133 | qWarning("dispatch irda %s", str.data() ); | 135 | qWarning("dispatch irda %s", str.data() ); |
134 | if ( str == "listDevices(QStringList)" ) { | 136 | if ( str == "devices(QStringList)" ) { |
135 | QDataStream stream( ar, IO_ReadOnly ); | 137 | QDataStream stream( ar, IO_ReadOnly ); |
136 | QStringList list; | 138 | QStringList list; |
137 | stream >> list; | 139 | stream >> list; |
138 | slotIrDaDevices( list ); | 140 | slotIrDaDevices( list ); |
139 | } | 141 | } |
140 | } | 142 | } |
141 | void SendWidget::dispatchBt( const QCString& str, const QByteArray& ar ) { | 143 | void SendWidget::dispatchBt( const QCString& str, const QByteArray& ar ) { |
142 | 144 | ||
143 | } | 145 | } |
144 | void SendWidget::slotIrError( int ) { | 146 | void SendWidget::slotIrError( int ) { |
145 | 147 | ||
146 | } | 148 | } |
147 | void SendWidget::slotIrSent( bool b) { | 149 | void SendWidget::slotIrSent( bool b) { |
150 | qWarning("irda sent!!"); | ||
148 | QString text = b ? tr("Sent") : tr("Failure"); | 151 | QString text = b ? tr("Sent") : tr("Failure"); |
149 | m_devBox->setStatus( m_irDa[m_start], text ); | 152 | // m_devBox->setStatus( m_irDa[m_start], text ); |
150 | m_start++; | 153 | m_start++; |
151 | slotStartIrda(); | 154 | slotStartIrda(); |
152 | } | 155 | } |
153 | void SendWidget::slotIrTry(unsigned int trI) { | 156 | void SendWidget::slotIrTry(unsigned int trI) { |
154 | m_devBox->setStatus( m_irDa[m_start], tr("Try %1").arg( QString::number( trI ) ) ); | 157 | // m_devBox->setStatus( m_irDa[m_start], tr("Try %1").arg( QString::number( trI ) ) ); |
155 | } | 158 | } |
156 | void SendWidget::slotStartIrda() { | 159 | void SendWidget::slotStartIrda() { |
157 | if (m_start >= m_irDa.count() ) { | 160 | if (m_start >= m_irDa.count() ) { |
158 | m_devBox->addDevice(tr("Search again for IrDa."), DeviceBox::Search ); | 161 | m_devBox->addDevice(tr("Search again for IrDa."), DeviceBox::Search ); |
159 | return; | 162 | return; |
160 | } | 163 | } |
161 | m_devBox->setStatus( m_irDa[m_start], tr("Start sending") ); | 164 | // m_devBox->setStatus( m_irDa[m_start], tr("Start sending") ); |
162 | m_obex->send( m_file ); | 165 | m_obex->send( m_file ); |
163 | } | 166 | } |
164 | void SendWidget::slotDone() { | 167 | void SendWidget::slotDone() { |
165 | QCopEnvelope e0("QPE/IrDaApplet", "disableIrda()"); | 168 | QCopEnvelope e0("QPE/IrDaApplet", "disableIrda()"); |
166 | QCopEnvelope e1("QPE/Bluetooth", "disableBluetooth()"); | 169 | QCopEnvelope e1("QPE/Bluetooth", "disableBluetooth()"); |
167 | emit done(); | 170 | emit done(); |
168 | } | 171 | } |
169 | QString SendWidget::file()const { | 172 | QString SendWidget::file()const { |
170 | return m_file; | 173 | return m_file; |
171 | } | 174 | } |
172 | DeviceBox::DeviceBox( QWidget* parent ) | 175 | DeviceBox::DeviceBox( QWidget* parent ) |
173 | : QTextBrowser( parent ) { | 176 | : QTextBrowser( parent ) { |
174 | 177 | ||
175 | } | 178 | } |
176 | DeviceBox::~DeviceBox() { | 179 | DeviceBox::~DeviceBox() { |
177 | 180 | ||
178 | } | 181 | } |
179 | void DeviceBox::addDevice( const QString& name, int dev, const QString& status ) { | 182 | void DeviceBox::addDevice( const QString& name, int dev, const QString& status ) { |
180 | QString tex; | 183 | QString tex; |
181 | DeviceItem item( name, status, dev ); | 184 | DeviceItem item( name, status, dev ); |
182 | m_dev.insert( name, item ); | 185 | m_dev.insert( name, item ); |
183 | tex = item.toString(); | 186 | tex = item.toString(); |
184 | m_devices.prepend(tex); | 187 | m_devices.prepend(tex); |
185 | setText( text()+ "<br>"+tex ); | 188 | setText( text()+ "<br>"+tex ); |
186 | } | 189 | } |
187 | void DeviceBox::removeDevice( const QString& name ) { | 190 | void DeviceBox::removeDevice( const QString& name ) { |
188 | if (!m_dev.contains(name) ) return; | 191 | if (!m_dev.contains(name) ) return; |
189 | m_devices.remove( m_dev[name].toString() ); | 192 | m_devices.remove( m_dev[name].toString() ); |
190 | 193 | ||
191 | m_dev.remove(name); | 194 | m_dev.remove(name); |
192 | setText( m_devices.join("<br>") ); | 195 | setText( m_devices.join("<br>") ); |
193 | 196 | ||
194 | } | 197 | } |
195 | void DeviceBox::setStatus( const QString& name, const QString& status ) { | 198 | void DeviceBox::setStatus( const QString& name, const QString& status ) { |
196 | if ( !m_dev.contains(name) ) return; | 199 | if ( !m_dev.contains(name) ) return; |
197 | DeviceItem dev = m_dev[name]; | 200 | DeviceItem dev = m_dev[name]; |
198 | QString ole = dev.toString(); | 201 | QString ole = dev.toString(); |
199 | dev.setStatus( status ); | 202 | dev.setStatus( status ); |
200 | int index = m_devices.findIndex( ole ); | 203 | int index = m_devices.findIndex( ole ); |
201 | m_devices[index] = dev.toString(); | 204 | m_devices[index] = dev.toString(); |
202 | setText( m_devices.join("<br>") ); | 205 | setText( m_devices.join("<br>") ); |
203 | } | 206 | } |
204 | void DeviceBox::setSource( const QString& str ) { | 207 | void DeviceBox::setSource( const QString& str ) { |
205 | qWarning("SetSource:%s", str.latin1() ); | 208 | qWarning("SetSource:%s", str.latin1() ); |
206 | emit selectedDevice( str, m_dev[str].device() ); | 209 | emit selectedDevice( str, m_dev[str].device() ); |
207 | } | 210 | } |
208 | 211 | ||
209 | 212 | ||
210 | DeviceItem::DeviceItem( const QString& name, | 213 | DeviceItem::DeviceItem( const QString& name, |
211 | const QString& status, int dev) | 214 | const QString& status, int dev) |
212 | { | 215 | { |
213 | m_name = name; | 216 | m_name = name; |
214 | m_status = status; | 217 | m_status = status; |
215 | m_dev = dev; | 218 | m_dev = dev; |
216 | } | 219 | } |
217 | QString DeviceItem::name()const { | 220 | QString DeviceItem::name()const { |
218 | return m_name; | 221 | return m_name; |
219 | } | 222 | } |
220 | QString DeviceItem::status()const { | 223 | QString DeviceItem::status()const { |
221 | return m_status; | 224 | return m_status; |
222 | } | 225 | } |
223 | int DeviceItem::device()const { | 226 | int DeviceItem::device()const { |
224 | return m_dev; | 227 | return m_dev; |
225 | } | 228 | } |
226 | QString DeviceItem::pixmap()const{ | 229 | QString DeviceItem::pixmap()const{ |
227 | QString str; | 230 | QString str; |
228 | switch(m_dev) { | 231 | switch(m_dev) { |
229 | case DeviceBox::IrDa: | 232 | case DeviceBox::IrDa: |
230 | str ="obex/irda"; | 233 | str ="obex/irda"; |
231 | break; | 234 | break; |
232 | case DeviceBox::BT: | 235 | case DeviceBox::BT: |
233 | str ="obex/bt"; | 236 | str ="obex/bt"; |
234 | break; | 237 | break; |
235 | case DeviceBox::Search: | 238 | case DeviceBox::Search: |
236 | str = "obex/search"; | 239 | str = "obex/search"; |
237 | break; | 240 | break; |
238 | case DeviceBox::Error: | 241 | case DeviceBox::Error: |
239 | str = "editdelete"; | 242 | str = "editdelete"; |
240 | break; | 243 | break; |
241 | }; | 244 | }; |
242 | return str; | 245 | return str; |
243 | } | 246 | } |
244 | DeviceItem::~DeviceItem() { | 247 | DeviceItem::~DeviceItem() { |
245 | } | 248 | } |
246 | void DeviceItem::setStatus(const QString& status ) { | 249 | void DeviceItem::setStatus(const QString& status ) { |
247 | m_status = status; | 250 | m_status = status; |
248 | } | 251 | } |
249 | QString DeviceItem::toString()const { | 252 | QString DeviceItem::toString()const { |
250 | return "<p><a href=\""+m_name +"\" ><img src=\""+pixmap()+"\" >"+m_name+" "+m_status+" </a></p>" ; | 253 | return "<p><a href=\""+m_name +"\" ><img src=\""+pixmap()+"\" >"+m_name+" "+m_status+" </a></p>" ; |
251 | } | 254 | } |