/******************************************************************************\ * Copyright (c) 2004-2006 * * Author(s): * Volker Fischer * * Description: * * SetLight(): * 0: Green * 1: Yellow * 2: Red * * ****************************************************************************** * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * \******************************************************************************/ #if !defined(AFX_MULTCOLORLED_H__FD6B49B5_87DF_48DD_A873_804E1606C2AC__INCLUDED_) #define AFX_MULTCOLORLED_H__FD6B49B5_87DF_48DD_A873_804E1606C2AC__INCLUDED_ #include #include #include #include #include "global.h" /* Definitions ****************************************************************/ #define DEFAULT_UPDATE_TIME 300 /* The red and yellow light should be on at least this interval */ #define MIN_TIME_FOR_RED_LIGHT 100 /* Classes ********************************************************************/ class CMultiColorLEDbase : public QObject { Q_OBJECT public: CMultiColorLEDbase(); void Reset(); void SetUpdateTime(int iNUTi); void SetLight(int iNewStatus); protected: enum ELightColor {RL_GREY, RL_RED, RL_GREEN, RL_YELLOW}; ELightColor eColorFlag; virtual void SetPixmap(QPixmap& NewBitmap) {} /* must be implemented in derived class! */ void UpdateColor(); QPixmap BitmCubeGreen; QPixmap BitmCubeYellow; QPixmap BitmCubeRed; QPixmap BitmCubeGrey; QTimer TimerRedLight; QTimer TimerGreenLight; QTimer TimerYellowLight; int iUpdateTime; bool bFlagRedLi; bool bFlagGreenLi; bool bFlagYellowLi; protected slots: void OnTimerRedLight(); void OnTimerGreenLight(); void OnTimerYellowLight(); }; class CMultiColorLED : public QLabel, public CMultiColorLEDbase { public: CMultiColorLED(QWidget* parent, const char* name = 0, WFlags f = 0); protected: virtual void SetPixmap(QPixmap& NewBitmap) {setPixmap(NewBitmap);} }; class CMultColLEDListViewItem : public CMultiColorLEDbase { public: CMultColLEDListViewItem ( const int iNewCol ) : iColumn ( iNewCol ), pListViewItem ( NULL ) {} void SetListViewItemPointer ( QListViewItem* pNewListViewItem ) { pListViewItem = pNewListViewItem; } protected: virtual void SetPixmap ( QPixmap& NewBitmap ) { if ( pListViewItem != NULL ) { pListViewItem->setPixmap ( iColumn, NewBitmap ); } } QListViewItem* pListViewItem; int iColumn; }; class CServerListViewItem : public QListViewItem { public: CServerListViewItem ( QListView* parent ) : LED0 ( 1 ), LED1 ( 2 ), QListViewItem ( parent ) { LED0.SetListViewItemPointer ( this ); LED1.SetListViewItemPointer ( this ); } void SetLight ( int iWhichLED, int iNewStatus ) { switch ( iWhichLED ) { case 0: LED0.SetLight ( iNewStatus ); break; case 1: LED1.SetLight ( iNewStatus ); break; } } protected: CMultColLEDListViewItem LED0, LED1; }; #endif // AFX_MULTCOLORLED_H__FD6B49B5_87DF_48DD_A873_804E1606C2AC__INCLUDED_