summaryrefslogtreecommitdiff
path: root/core/applets/irdaapplet
authordwmw2 <dwmw2>2002-04-01 21:41:04 (UTC)
committer dwmw2 <dwmw2>2002-04-01 21:41:04 (UTC)
commit22183e22f3d1776c6c73219bd1a07ddf6bb8d670 (patch) (side-by-side diff)
tree82712ae6199ba31dbf826d2ded63e866a05373e6 /core/applets/irdaapplet
parent5c8abf28f5c839d1af9565b58b9f01aa54378eab (diff)
downloadopie-22183e22f3d1776c6c73219bd1a07ddf6bb8d670.zip
opie-22183e22f3d1776c6c73219bd1a07ddf6bb8d670.tar.gz
opie-22183e22f3d1776c6c73219bd1a07ddf6bb8d670.tar.bz2
Import basic applet to allow switching IrDA on and off.
Diffstat (limited to 'core/applets/irdaapplet') (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/irdaapplet/.cvsignore3
-rw-r--r--core/applets/irdaapplet/irda.cpp159
-rw-r--r--core/applets/irdaapplet/irda.h57
-rw-r--r--core/applets/irdaapplet/irdaapplet.pro11
-rw-r--r--core/applets/irdaapplet/irdaappletimpl.cpp64
-rw-r--r--core/applets/irdaapplet/irdaappletimpl.h44
-rw-r--r--core/applets/irdaapplet/opie-irdaapplet.control9
7 files changed, 347 insertions, 0 deletions
diff --git a/core/applets/irdaapplet/.cvsignore b/core/applets/irdaapplet/.cvsignore
new file mode 100644
index 0000000..2c33e73
--- a/dev/null
+++ b/core/applets/irdaapplet/.cvsignore
@@ -0,0 +1,3 @@
+moc_*
+*.moc
+Makefile*
diff --git a/core/applets/irdaapplet/irda.cpp b/core/applets/irdaapplet/irda.cpp
new file mode 100644
index 0000000..2eff2a9
--- a/dev/null
+++ b/core/applets/irdaapplet/irda.cpp
@@ -0,0 +1,159 @@
+/**********************************************************************
+** Copyright (C) 2002 David Woodhouse <dwmw2@infradead.org>
+** Heavily based on volumeapplet, (C) 2002 L.J. Potter ljp@llornkcor.com
+** All rights reserved.
+**
+** 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 "irda.h"
+#include <qapplication.h>
+#include <stdlib.h>
+
+
+#include <qpe/resource.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/timestring.h>
+#include <qpe/resource.h>
+#include <qpe/config.h>
+#include <qpe/applnk.h>
+#include <qpe/config.h>
+
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qpoint.h>
+#include <qpushbutton.h>
+#include <qpainter.h>
+#include <qcombobox.h>
+#include <qspinbox.h>
+#include <qslider.h>
+#include <qlayout.h>
+#include <qframe.h>
+#include <qpixmap.h>
+#include <qstring.h>
+#include <qfile.h>
+#include <qtimer.h>
+#include <qpopupmenu.h>
+
+#include <net/if.h>
+#include <netinet/in.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/ioctl.h>
+
+
+//===========================================================================
+
+IrdaApplet::IrdaApplet( QWidget *parent, const char *name )
+ : QWidget( parent, name )
+{
+ setFixedHeight( 18 );
+ setFixedWidth( 14 );
+ sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
+ irdaOnPixmap = Resource::loadPixmap( "irdaapplet/irdaon" );
+ irdaOffPixmap = Resource::loadPixmap( "irdaapplet/irdaoff" );
+ startTimer(5000);
+ timerEvent(NULL);
+}
+
+IrdaApplet::~IrdaApplet()
+{
+ close(sockfd);
+}
+
+int IrdaApplet::checkIrdaStatus()
+{
+ struct ifreq ifr;
+
+ strcpy(ifr.ifr_name, "irda0");
+
+ if (ioctl(sockfd, SIOCGIFFLAGS, &ifr))
+ return -1;
+
+ return (ifr.ifr_flags & IFF_UP)?1:0;
+}
+
+int IrdaApplet::setIrdaStatus(int c)
+{
+ struct ifreq ifr;
+
+ strcpy(ifr.ifr_name, "irda0");
+
+ if (ioctl(sockfd, SIOCGIFFLAGS, &ifr))
+ return -1;
+
+ if (c)
+ ifr.ifr_flags |= IFF_UP;
+ else
+ ifr.ifr_flags &= ~IFF_UP;
+
+ if (ioctl(sockfd, SIOCSIFFLAGS, &ifr))
+ return -1;
+
+ return 0;
+}
+
+void IrdaApplet::mousePressEvent( QMouseEvent *)
+{
+ QPopupMenu *menu = new QPopupMenu();
+ QString cmd;
+ int ret=0;
+
+ /* Refresh active state */
+ timerEvent(NULL);
+
+// menu->insertItem( tr("More..."), 2 );
+ if (irdaactive)
+ menu->insertItem( tr("Disable IrDA"), 0 );
+ else
+ menu->insertItem( tr("Enable IrDA"), 1 );
+
+ QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) );
+ ret = menu->exec(p, 1);
+
+ qDebug("ret was %d\n", ret);
+
+ switch(ret) {
+ case 0:
+ setIrdaStatus(0);
+ timerEvent(NULL);
+ break;
+ case 1:
+ setIrdaStatus(1);
+ timerEvent(NULL);
+ break;
+ case 2:
+ qDebug("FIXME: Bring up pretty menu...\n");
+ // With 'discovery' button to enable/disable,
+ // and table of currently-detected devices.
+ }
+
+}
+
+void IrdaApplet::timerEvent( QTimerEvent * )
+{
+ int oldactive = irdaactive;
+
+ irdaactive = checkIrdaStatus();
+ if (irdaactive != oldactive)
+ paintEvent(NULL);
+
+}
+
+void IrdaApplet::paintEvent( QPaintEvent* )
+{
+ QPainter p(this);
+ qDebug("paint irda pixmap");
+
+ if (irdaactive > 0)
+ p.drawPixmap( 0, 1, irdaOnPixmap );
+ else
+ p.drawPixmap( 0, 1, irdaOffPixmap );
+}
diff --git a/core/applets/irdaapplet/irda.h b/core/applets/irdaapplet/irda.h
new file mode 100644
index 0000000..d762ff3
--- a/dev/null
+++ b/core/applets/irdaapplet/irda.h
@@ -0,0 +1,57 @@
+/**********************************************************************
+** Copyright (C) 2002 L.J. Potter ljp@llornkcor.com
+** All rights reserved.
+**
+** 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.
+**
+**********************************************************************/
+
+#ifndef __SCREENSHOT_APPLET_H__
+#define __SCREENSHOT_APPLET_H__
+
+
+
+#include <qwidget.h>
+#include <qframe.h>
+#include <qpixmap.h>
+#include <qguardedptr.h>
+#include <qtimer.h>
+
+
+class IrdaApplet : public QWidget
+{
+ Q_OBJECT
+public:
+ IrdaApplet( QWidget *parent = 0, const char *name=0 );
+ ~IrdaApplet();
+
+protected:
+ void timerEvent(QTimerEvent *te );
+
+public slots:
+private:
+ void mousePressEvent( QMouseEvent * );
+ void paintEvent( QPaintEvent* );
+ int checkIrdaStatus();
+ int setIrdaStatus(int);
+ int sockfd;
+
+private:
+ QPixmap irdaOnPixmap;
+ QPixmap irdaOffPixmap;
+ int irdaactive;
+
+private slots:
+
+
+};
+
+
+#endif // __SCREENSHOT_APPLET_H__
+
diff --git a/core/applets/irdaapplet/irdaapplet.pro b/core/applets/irdaapplet/irdaapplet.pro
new file mode 100644
index 0000000..c8f3fdc
--- a/dev/null
+++ b/core/applets/irdaapplet/irdaapplet.pro
@@ -0,0 +1,11 @@
+TEMPLATE = lib
+CONFIG += qt warn_on release
+HEADERS = irda.h irdaappletimpl.h
+SOURCES = irda.cpp irdaappletimpl.cpp
+TARGET = irdaapplet
+DESTDIR = ../../plugins/applets
+INCLUDEPATH += $(OPIEDIR)/include
+DEPENDPATH += ../$(OPIEDIR)/include
+LIBS += -lqpe
+VERSION = 1.0.0
+
diff --git a/core/applets/irdaapplet/irdaappletimpl.cpp b/core/applets/irdaapplet/irdaappletimpl.cpp
new file mode 100644
index 0000000..02443db
--- a/dev/null
+++ b/core/applets/irdaapplet/irdaappletimpl.cpp
@@ -0,0 +1,64 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** 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.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#include "irda.h"
+#include "irdaappletimpl.h"
+
+
+IrdaAppletImpl::IrdaAppletImpl()
+ : irda(0), ref(0)
+{
+}
+
+IrdaAppletImpl::~IrdaAppletImpl()
+{
+ delete irda;
+}
+
+QWidget *IrdaAppletImpl::applet( QWidget *parent )
+{
+ if ( !irda )
+ irda = new IrdaApplet( parent );
+ return irda;
+}
+
+int IrdaAppletImpl::position() const
+{
+ return 6;
+}
+
+QRESULT IrdaAppletImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
+{
+ *iface = 0;
+ if ( uuid == IID_QUnknown )
+ *iface = this;
+ else if ( uuid == IID_TaskbarApplet )
+ *iface = this;
+
+ if ( *iface )
+ (*iface)->addRef();
+ return QS_OK;
+}
+
+Q_EXPORT_INTERFACE()
+{
+ Q_CREATE_INSTANCE( IrdaAppletImpl )
+}
+
+
diff --git a/core/applets/irdaapplet/irdaappletimpl.h b/core/applets/irdaapplet/irdaappletimpl.h
new file mode 100644
index 0000000..abedb07
--- a/dev/null
+++ b/core/applets/irdaapplet/irdaappletimpl.h
@@ -0,0 +1,44 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** 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.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#ifndef SCREENSHOTAPPLETIMPL_H
+#define SCREENSHOTAPPLETIMPL_H
+
+#include <qpe/taskbarappletinterface.h>
+
+class IrdaApplet;
+
+class IrdaAppletImpl : public TaskbarAppletInterface
+{
+public:
+ IrdaAppletImpl();
+ virtual ~IrdaAppletImpl();
+
+ QRESULT queryInterface( const QUuid&, QUnknownInterface** );
+ Q_REFCOUNT
+
+ virtual QWidget *applet( QWidget *parent );
+ virtual int position() const;
+
+private:
+ IrdaApplet *irda;
+ ulong ref;
+};
+
+#endif
diff --git a/core/applets/irdaapplet/opie-irdaapplet.control b/core/applets/irdaapplet/opie-irdaapplet.control
new file mode 100644
index 0000000..d730554
--- a/dev/null
+++ b/core/applets/irdaapplet/opie-irdaapplet.control
@@ -0,0 +1,9 @@
+Files: plugins/applets/libirdaapplet.so* pics/irdaapplet/*
+Priority: optional
+Section: opie/system
+Maintainer: David Woodhouse <dwmw2@infradead.org>
+Architecture: arm
+Version: $QPE_VERSION-$SUB_VERSION.1
+Depends: opie-base ($QPE_VERSION)
+Description: Irda Applet
+ An IrDA taskbar applet for the Opie environment