summaryrefslogtreecommitdiff
path: root/core/obex/obex.cc
authormickeyl <mickeyl>2005-08-22 09:36:38 (UTC)
committer mickeyl <mickeyl>2005-08-22 09:36:38 (UTC)
commit7202ac536ac98e7e433984d98cb9236330b25cc8 (patch) (side-by-side diff)
treec8b5d4e57dd4b9b302999d1f88a89c28e4ee0e5e /core/obex/obex.cc
parent140e4dc44a29678de1ae8b2cef5b1d081993223e (diff)
downloadopie-7202ac536ac98e7e433984d98cb9236330b25cc8.zip
opie-7202ac536ac98e7e433984d98cb9236330b25cc8.tar.gz
opie-7202ac536ac98e7e433984d98cb9236330b25cc8.tar.bz2
Replace the existing, apparently non-working, OBEX Send form with a
completely new implementation. The new implementation supports selective send over both IrDA and Bluetooth, to selected receivers (which are discovered as the form pops up). The form also indicates transfer status as the transfers progress. There is a new QT Designer UI form file, integrated into the build. There are also two new source files for the form to supply the abstract methods (typical of QT2). Patch courtesy Michael Haynie - thanks!
Diffstat (limited to 'core/obex/obex.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obex.cc187
1 files changed, 0 insertions, 187 deletions
diff --git a/core/obex/obex.cc b/core/obex/obex.cc
deleted file mode 100644
index 36634ec..0000000
--- a/core/obex/obex.cc
+++ b/dev/null
@@ -1,187 +0,0 @@
-
-#include "obex.h"
-
-/* OPIE */
-#include <opie2/oprocess.h>
-#include <opie2/odebug.h>
-
-/* QT */
-#include <qfileinfo.h>
-
-
-
-using namespace OpieObex;
-
-using namespace Opie::Core;
-/* TRANSLATOR OpieObex::Obex */
-
-Obex::Obex( QObject *parent, const char* name )
- : QObject(parent, name )
-{
- m_rec = 0;
- m_send=0;
- m_count = 0;
- m_receive = false;
- connect( this, SIGNAL(error(int) ), // for recovering to receive
- SLOT(slotError() ) );
- connect( this, SIGNAL(sent(bool) ),
- SLOT(slotError() ) );
-};
-Obex::~Obex() {
- delete m_rec;
- delete m_send;
-}
-void Obex::receive() {
- m_receive = true;
- m_outp = QString::null;
- m_rec = new OProcess();
- *m_rec << "irobex_palm3";
- // connect to the necessary slots
- connect(m_rec, SIGNAL(processExited(Opie::Core::OProcess*) ),
- this, SLOT(slotExited(Opie::Core::OProcess*) ) );
-
- connect(m_rec, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ),
- this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) );
-
- if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
- emit done( false );
- delete m_rec;
- m_rec = 0;
- }
-}
-
-void Obex::send( const QString& fileName) { // if currently receiving stop it send receive
- m_count = 0;
- m_file = fileName;
- if (m_rec != 0 ) {
- if (m_rec->isRunning() ) {
- emit error(-1 );
- delete m_rec;
- m_rec = 0;
-
- }else{
- emit error( -1 ); // we did not delete yet but it's not running slotExited is pending
- return;
- }
- }
- sendNow();
-}
-void Obex::sendNow(){
- if ( m_count >= 25 ) { // could not send
- emit error(-1 );
- emit sent(false);
- return;
- }
- // OProcess inititialisation
- m_send = new OProcess();
- m_send->setWorkingDirectory( QFileInfo(m_file).dirPath(true) );
-
- *m_send << "irobex_palm3";
- *m_send << QFile::encodeName(QFileInfo(m_file).fileName());
-
- // connect to slots Exited and and StdOut
- connect(m_send, SIGNAL(processExited(Opie::Core::OProcess*) ),
- this, SLOT(slotExited(Opie::Core::OProcess*)) );
- connect(m_send, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int )),
- this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) );
-
- // now start it
- if (!m_send->start(/*OProcess::NotifyOnExit, OProcess::AllOutput*/ ) ) {
- m_count = 25;
- emit error(-1 );
- delete m_send;
- m_send=0;
- }
- // end
- m_count++;
- emit currentTry( m_count );
-}
-
-void Obex::slotExited(OProcess* proc ){
- if (proc == m_rec ) // receive process
- received();
- else if ( proc == m_send )
- sendEnd();
-
-}
-void Obex::slotStdOut(OProcess* proc, char* buf, int len){
- if ( proc == m_rec ) { // only receive
- QByteArray ar( len );
- memcpy( ar.data(), buf, len );
- m_outp.append( ar );
- }
-}
-
-void Obex::received() {
- if (m_rec->normalExit() ) {
- if ( m_rec->exitStatus() == 0 ) { // we got one
- QString filename = parseOut();
- emit receivedFile( filename );
- }
- }else{
- emit done(false);
- };
- delete m_rec;
- m_rec = 0;
- receive();
-}
-
-void Obex::sendEnd() {
- if (m_send->normalExit() ) {
- if ( m_send->exitStatus() == 0 ) {
- delete m_send;
- m_send=0;
- emit sent(true);
- }else if (m_send->exitStatus() == 255 ) { // it failed maybe the other side wasn't ready
- // let's try it again
- delete m_send;
- m_send = 0;
- sendNow();
- }
- }else {
- emit error( -1 );
- delete m_send;
- m_send = 0;
- }
-}
-QString Obex::parseOut( ){
- QString path;
- QStringList list = QStringList::split("\n", m_outp);
- QStringList::Iterator it;
- for (it = list.begin(); it != list.end(); ++it ) {
- if ( (*it).startsWith("Wrote" ) ) {
- int pos = (*it).findRev('(' );
- if ( pos > 0 ) {
-
- path = (*it).remove( pos, (*it).length() - pos );
- path = path.mid(6 );
- path = path.stripWhiteSpace();
- }
- }
- }
- return path;
-}
-/**
- * when sent is done slotError is called we will start receive again
- */
-void Obex::slotError() {
- if ( m_receive )
- receive();
-};
-void Obex::setReceiveEnabled( bool receive ) {
- if ( !receive ) { //
- m_receive = false;
- shutDownReceive();
- }
-}
-
-void Obex::shutDownReceive() {
- if (m_rec != 0 ) {
- if (m_rec->isRunning() ) {
- emit error(-1 );
- delete m_rec;
- m_rec = 0;
- }
- }
-
-}