127 lines
3.0 KiB
C++
127 lines
3.0 KiB
C++
/*******************************************************************************
|
|
* *
|
|
* Société de Transports de Montréal. *
|
|
* 2013 *
|
|
* *
|
|
* Projet Zones Tests *
|
|
* *
|
|
* *
|
|
* *
|
|
*******************************************************************************/
|
|
/*
|
|
Description:
|
|
.
|
|
|
|
*/
|
|
|
|
|
|
#include "ONOFFStatusWidget.h"
|
|
#include <QPainter>
|
|
|
|
CONOFFStatusWidget::CONOFFStatusWidget(eONOFFLedColor Color,int index, QWidget *Parent,QString Label)
|
|
{
|
|
setParent(Parent);
|
|
if(Color == ON_OFF_LED_COLOR_GREEN)
|
|
{
|
|
mLedOffPixmap = QPixmap("./Images/green-led-off-md.png");//.scaled(10,10);
|
|
mLedOnPixmap = QPixmap("./Images/green-led-on-md.png");//.scaled(10,10);
|
|
}
|
|
else
|
|
{
|
|
mLedOffPixmap = QPixmap("./Images/red-led-off-md.png");//.scaled(10,10);
|
|
mLedOnPixmap = QPixmap("./Images/red-led-on-md.png");//.scaled(10,10);
|
|
}
|
|
|
|
mLabel = new QLabel(Label,this);
|
|
mLabel->move(0,15);
|
|
|
|
mIndex = index;
|
|
mIsOn = false;
|
|
}
|
|
|
|
CONOFFStatusWidget::~CONOFFStatusWidget()
|
|
{
|
|
}
|
|
|
|
void CONOFFStatusWidget::SetON()
|
|
{
|
|
if(mIsOn == false)
|
|
{
|
|
mIsOn = true;
|
|
repaint();
|
|
}
|
|
}
|
|
|
|
void CONOFFStatusWidget::SetOFF()
|
|
{
|
|
if(mIsOn == true)
|
|
{
|
|
mIsOn = false;
|
|
repaint();
|
|
}
|
|
}
|
|
|
|
void CONOFFStatusWidget::SetState(bool IsON)
|
|
{
|
|
if(IsON != mIsOn) //don't repaint if not necessary
|
|
{
|
|
mIsOn = IsON;
|
|
repaint();
|
|
}
|
|
}
|
|
|
|
void CONOFFStatusWidget::Toggle()
|
|
{
|
|
if(mIsOn)
|
|
{
|
|
SetOFF();
|
|
}
|
|
else
|
|
{
|
|
SetON();
|
|
}
|
|
}
|
|
|
|
void CONOFFStatusWidget::paintEvent(QPaintEvent *PaintEvent)
|
|
{
|
|
QPainter painter(this);
|
|
|
|
if(mIsOn)
|
|
{
|
|
painter.drawPixmap(0,0,mLedOnPixmap);
|
|
}
|
|
else
|
|
{
|
|
painter.drawPixmap(0,0,mLedOffPixmap);
|
|
}
|
|
}
|
|
|
|
void CONOFFStatusWidget::resizeEvent(QResizeEvent *event)
|
|
{
|
|
int width = geometry().width();
|
|
int height = geometry().height();
|
|
bool square = height == width;
|
|
|
|
if(mLabel->text().isEmpty() == false)
|
|
{
|
|
height = geometry().height() - mLabel->fontMetrics().height();
|
|
}
|
|
|
|
if(square)
|
|
{
|
|
width = height;
|
|
}
|
|
|
|
mLedOffPixmap = QPixmap("./Images/green-led-off-md.png").scaled(width,height);
|
|
mLedOnPixmap = QPixmap("./Images/green-led-on-md.png").scaled(width,height);
|
|
|
|
int LabelWidth = mLabel->fontMetrics().width(mLabel->text());
|
|
mLabel->move((width/2)-(LabelWidth/2),height);
|
|
|
|
}
|
|
|
|
void CONOFFStatusWidget::mouseReleaseEvent(QMouseEvent *event)
|
|
{
|
|
emit Clicked(mIndex);
|
|
}
|