summaryrefslogtreecommitdiff
path: root/core
Side-by-side diff
Diffstat (limited to 'core') (more/less context) (show whitespace changes)
-rw-r--r--core/applets/irdaapplet/irda.cpp34
-rw-r--r--core/applets/irdaapplet/irda.h3
2 files changed, 37 insertions, 0 deletions
diff --git a/core/applets/irdaapplet/irda.cpp b/core/applets/irdaapplet/irda.cpp
index c3ddff2..84c656f 100644
--- a/core/applets/irdaapplet/irda.cpp
+++ b/core/applets/irdaapplet/irda.cpp
@@ -1,27 +1,30 @@
/**********************************************************************
** Copyright (C) 2002 David Woodhouse <dwmw2@infradead.org>
** Max Reiss <harlekin@handhelds.org> [trivial stuff]
** Robert Griebl <sandman@handhelds.org>
+** Holger Freyther <zecke@handhelds.org> QCOP Interface
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
+#include <qcopchannel_qws.h>
+
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
#include <qpe/ir.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/sound.h>
#include <qpainter.h>
#include <qfile.h>
#include <qtimer.h>
#include <qtextstream.h>
#include <qpopupmenu.h>
@@ -45,24 +48,29 @@ IrdaApplet::IrdaApplet ( QWidget *parent, const char *name )
m_sockfd = ::socket ( PF_INET, SOCK_DGRAM, IPPROTO_IP );
m_irdaOnPixmap = Resource::loadPixmap( "irdaapplet/irdaon" );
m_irdaOffPixmap = Resource::loadPixmap( "irdaapplet/irdaoff" );
m_irdaDiscoveryOnPixmap = Resource::loadPixmap( "irdaapplet/magglass" );
m_receiveActivePixmap = Resource::loadPixmap( "irdaapplet/receive" );
m_irda_active = false;
m_irda_discovery_active = false;
m_receive_active = false;
m_receive_state_changed = false;
m_popup = 0;
+ m_wasOn = false;
+
+ QCopChannel* chan = new QCopChannel("QPE/IrDaApplet", this );
+ connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ),
+ this, SLOT(slotMessage(const QCString&, const QByteArray& ) ) );
}
void IrdaApplet::show()
{
QWidget::show ( );
startTimer ( 2000 );
}
IrdaApplet::~IrdaApplet()
{
if ( m_sockfd >= 0 )
::close ( m_sockfd );
@@ -302,12 +310,38 @@ void IrdaApplet::timerEvent ( QTimerEvent * )
void IrdaApplet::paintEvent ( QPaintEvent * )
{
QPainter p ( this );
p. drawPixmap ( 0, 1, m_irda_active ? m_irdaOnPixmap : m_irdaOffPixmap );
if ( m_irda_discovery_active )
p. drawPixmap( 0, 1, m_irdaDiscoveryOnPixmap );
if ( m_receive_active )
p. drawPixmap( 0, 1, m_receiveActivePixmap );
}
+/*
+ * We know 3 calls
+ * a) enable
+ * b) disable
+ * a and b will temp enable the IrDa device and disable will disable it again if it wasn't on
+ * c) listDevices: We will return a list of known devices
+ */
+void IrdaApplet::slotMessage( const QCString& str, const QByteArray& ar ) {
+ if ( str == "enableIrda()") {
+ m_wasOn = checkIrdaStatus();
+ if (!m_wasOn)
+ setIrdaStatus( true );
+ }else if ( str == "disableIrda()") {
+ if (!m_wasOn)
+ setIrdaStatus( false );
+ }else if ( str == "listDevices()") {
+ QCopEnvelope e("QPE/IrDaAppletBack", "devices(QStringList)");
+
+ QStringList list;
+ QMap<QString, QString>::Iterator it;
+ for (it = m_devices.begin(); it != m_devices.end(); ++it )
+ list << (*it);
+
+ e << list;
+ }
+}
diff --git a/core/applets/irdaapplet/irda.h b/core/applets/irdaapplet/irda.h
index 1b5faa6..675f874 100644
--- a/core/applets/irdaapplet/irda.h
+++ b/core/applets/irdaapplet/irda.h
@@ -29,24 +29,25 @@ public:
IrdaApplet( QWidget *parent = 0, const char *name = 0 );
~IrdaApplet();
virtual void show ( );
protected:
virtual void timerEvent ( QTimerEvent * );
virtual void mousePressEvent ( QMouseEvent * );
virtual void paintEvent ( QPaintEvent* );
private slots:
void popupTimeout ( );
+ void slotMessage( const QCString& , const QByteArray& );
private:
void popup( QString message, QString icon = QString::null );
bool checkIrdaStatus ( );
bool setIrdaStatus ( bool );
bool checkIrdaDiscoveryStatus ();
bool setIrdaDiscoveryStatus ( bool );
bool setIrdaReceiveStatus ( bool );
void showDiscovered();
@@ -57,16 +58,18 @@ private:
QPixmap m_receiveActivePixmap;
bool m_irda_active;
bool m_irda_discovery_active;
bool m_receive_active;
bool m_receive_state_changed;
QPopupMenu *m_popup;
int m_sockfd;
QMap <QString, QString> m_devices;
+
+ bool m_wasOn; // if IrDa was enabled
};
#endif // __OPIE_IRDA_APPLET_H__