summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/pyquicklaunch/pyquicklaunch.cpp64
-rw-r--r--noncore/applets/pyquicklaunch/pyquicklaunch.h15
2 files changed, 68 insertions, 11 deletions
diff --git a/noncore/applets/pyquicklaunch/pyquicklaunch.cpp b/noncore/applets/pyquicklaunch/pyquicklaunch.cpp
index 2ee8e17..bcd2f0d 100644
--- a/noncore/applets/pyquicklaunch/pyquicklaunch.cpp
+++ b/noncore/applets/pyquicklaunch/pyquicklaunch.cpp
@@ -16,15 +16,24 @@
/* OPIE */
#include <opie2/odebug.h>
#include <opie2/otaskbarapplet.h>
-#include <qpe/qpeapplication.h>
#include <qpe/config.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/resource.h>
using namespace Opie::Core;
/* QT */
+#include <qcopchannel_qws.h>
#include <qpainter.h>
#include <qframe.h>
+#include <qfile.h>
+#include <qtimer.h>
+
+/* STD */
+#include <pwd.h>
+#include <sys/types.h>
+#include <unistd.h>
PyQuicklaunchControl::PyQuicklaunchControl( PyQuicklaunchApplet *applet, QWidget *parent, const char *name )
: QFrame( parent, name, WStyle_StaysOnTop | WType_Popup ), applet( applet )
{
@@ -66,38 +75,75 @@ void PyQuicklaunchControl::writeConfigEntry( const char *entry, int val )
//===========================================================================
PyQuicklaunchApplet::PyQuicklaunchApplet( QWidget *parent, const char *name )
- : QWidget( parent, name )
+ : QWidget( parent, name ), online( false )
{
setFixedHeight( 18 );
setFixedWidth( 14 );
status = new PyQuicklaunchControl( this, this, "Python Quicklaunch Status" );
+
+ _online = Resource::loadPixmap( "pyquicklaunch/online" );
+ _offline = Resource::loadPixmap( "pyquicklaunch/offline" );
+
+ _fifoName = QString().sprintf( "/tmp/mickeys-quicklauncher-%s", ::getpwuid( ::getuid() )->pw_name );
+ odebug << "PyQuicklaunchApplet fifo name = '" << _fifoName << "'" << oendl;
+ _fifo.setName( _fifoName );
+
+ _control = new QCopChannel( "QPE/PyLauncher", parent, "PyLauncher QCop Control Channel" );
+ connect( _control, SIGNAL(received(const QCString&,const QByteArray&)),
+ this, SLOT(receivedMessage(const QCString&,const QByteArray&) ) );
+
}
PyQuicklaunchApplet::~PyQuicklaunchApplet()
-{}
+{
+}
+
+
+void PyQuicklaunchApplet::receivedMessage( const QCString& msg, const QByteArray& data )
+{
+ odebug << "receivedMessage = '" << msg << "' " << oendl;
+
+ if ( msg == "setOnline()" )
+ {
+ online = true;
+ repaint( true );
+ }
+ else if ( msg == "setOffline()" )
+ {
+ online = false;
+ repaint( true );
+ }
+ else
+ {
+ odebug << "unknown command." << oendl;
+ }
+}
void PyQuicklaunchApplet::timerEvent( QTimerEvent* )
{
- // FIXME
+ bool nowOnline = _fifo.exists();
+ if ( nowOnline != online )
+ {
+ online = nowOnline;
+ repaint( true );
+ }
}
+
void PyQuicklaunchApplet::mousePressEvent( QMouseEvent * )
{
status->isVisible() ? status->hide() : status->show( true );
}
+
void PyQuicklaunchApplet::paintEvent( QPaintEvent* )
{
QPainter p( this );
- int h = height();
- int w = width();
-
- // FIXME
-
+ p.drawPixmap( 0, 2, online ? _online : _offline );
}
int PyQuicklaunchApplet::position()
diff --git a/noncore/applets/pyquicklaunch/pyquicklaunch.h b/noncore/applets/pyquicklaunch/pyquicklaunch.h
index e99f780..f108b43 100644
--- a/noncore/applets/pyquicklaunch/pyquicklaunch.h
+++ b/noncore/applets/pyquicklaunch/pyquicklaunch.h
@@ -15,12 +15,14 @@
#ifndef PYQUICKLAUNCHAPPLET_H
#define PYQUICKLAUNCHAPPLET_H
#include <qwidget.h>
+#include <qfile.h>
#include <qframe.h>
#include <qpixmap.h>
class PyQuicklaunchApplet;
+class QCopChannel;
class PyQuicklaunchControl : public QFrame
{
Q_OBJECT
@@ -30,10 +32,8 @@ class PyQuicklaunchControl : public QFrame
void readConfig();
void writeConfigEntry( const char* entry, int val );
- public slots:
-
private:
PyQuicklaunchApplet* applet;
};
@@ -46,12 +46,23 @@ class PyQuicklaunchApplet : public QWidget
static int position();
PyQuicklaunchControl* status;
virtual void timerEvent( QTimerEvent* );
+ bool online;
+
+ public slots:
+ void receivedMessage( const QCString & msg, const QByteArray & data );
protected:
virtual void mousePressEvent( QMouseEvent * );
virtual void paintEvent( QPaintEvent* );
+
+ private:
+ QCopChannel* _control;
+ QFile _fifo;
+ QString _fifoName;
+ QPixmap _online;
+ QPixmap _offline;
};
#endif // PYQUICKLAUNCHAPPLET_H