CableTestBench/Sources/Widgets/ONOFFStatusWidget.cpp
2019-05-08 14:17:31 -04:00

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);
}