From 15318cad33835e4e2dc620d033e43cd930676cdd Mon Sep 17 00:00:00 2001
From: kergoth <kergoth>
Date: Fri, 25 Jan 2002 22:14:26 +0000
Subject: Initial revision

---
(limited to 'library/ir.cpp')

diff --git a/library/ir.cpp b/library/ir.cpp
new file mode 100644
index 0000000..68345d1
--- a/dev/null
+++ b/library/ir.cpp
@@ -0,0 +1,79 @@
+#include "ir.h"
+
+#include <qstring.h>
+#include "qcopenvelope_qws.h"
+#include <qcopchannel_qws.h>
+#include "applnk.h"
+
+/*! 
+  \class Ir ir.h
+  \brief The Ir class implements basic support for sending objects over an
+  infrared communication link.
+  
+  The Ir class is a small helper class to enable sending of objects over an infrared communication link.
+*/
+
+/*!
+  Constructs an Ir object. The \a parent and \a name classes are the
+  standard QObject parameters.
+*/
+Ir::Ir( QObject *parent, const char *name )
+    : QObject( parent, name )
+{
+    ch = new QCopChannel( "QPE/Obex" );
+    connect( ch, SIGNAL(received(const QCString &, const QByteArray &)),
+	     this, SLOT(obexMessage( const QCString &, const QByteArray &)) );
+}
+
+/*! 
+  Returns TRUE if the system supports infrared communication.
+*/
+bool Ir::supported()
+{
+    return QCopChannel::isRegistered( "QPE/Obex" );
+}
+
+/*!
+  Send the object in the file \a fn over the infrared link.
+  The \a description will be shown to the user while
+  sending is in progress.
+  The optional \a mimetype parameter specifies the mimetype of the object. If this parameter is not
+  set, it will be determined by the extension of the filename.
+*/
+void Ir::send( const QString &fn, const QString &description, const QString &mimetype)
+{
+    if ( !filename.isEmpty() ) return;
+    filename = fn;
+    QCopEnvelope e("QPE/Obex", "send(QString,QString,QString)");
+    e << description << filename << mimetype;
+}
+
+/*!
+  \overload
+
+  Uses the DocLnk::file() and DocLnk::type() of \a doc.
+*/
+void Ir::send( const DocLnk &doc, const QString &description )
+{
+    send( doc.file(), description, doc.type() );
+}
+
+/*! 
+  \fn Ir::done( Ir *ir );
+  
+  This signal is emitted by \a ir, when the send comand has been processed.
+*/
+
+/*!\internal
+ */
+void Ir::obexMessage( const QCString &msg, const QByteArray &data)
+{
+    if ( msg == "done(QString)" ) {
+	QString fn;
+	QDataStream stream( data, IO_ReadOnly );
+	stream >> fn;
+	if ( fn == filename )
+	    emit done( this );
+    }
+}
+    
--
cgit v0.9.0.2