-rw-r--r-- | noncore/applets/pyquicklaunch/pyquicklaunch.cpp | 64 | ||||
-rw-r--r-- | noncore/applets/pyquicklaunch/pyquicklaunch.h | 15 |
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 |