/******************************************************************************* * * * Société de Transports de Montréal. * * 2013 * * * * Projet Zones Tests * * * * * * * *******************************************************************************/ /* Description: . */ #include "ONOFFStatusWidget.h" #include 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); }