ZT/sources/GuiElements/EventItem.cpp

132 lines
3.5 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Affiche un rectangle qui "flash" en rouge lorsqu'une fonction de détection
est désactivée. Le clignotement est une petite animation qui change la
transparence de la couleur de fond.
*/
/* ************************************************************************** */
/* Revision:
### 20130524 JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#include "EventItem.h"
#include <QPainter>
#include "ZTData.h"
#include <QGraphicsSceneMouseEvent>
#include "CDV.h"
#include <QPoint>
CEventItem::CEventItem(QString Label,bool Animated,QGraphicsItem *Parent)
{
setParentItem(Parent);
// mCDVFreeBrush = new QBrush(Qt::gray);
// mCDVITICommandedBrush = new QBrush(Qt::darkGreen);
// mCDVOccupiedBrush = new QBrush(Qt::yellow);
setGeometry(0,0,40,25);
mCurBrush = new QBrush(Qt::lightGray);
mLabelFont.setPixelSize(12);
mLabelFont.setBold(true);
SetLabel(Label);
mAnimated = Animated;
if(mAnimated)
{
mAnimationTimeline = new QTimeLine(1000);
connect(mAnimationTimeline,SIGNAL(valueChanged(qreal)),this,SLOT(UpdateAnimation(qreal)));
connect(mAnimationTimeline,SIGNAL(finished()),this,SLOT(AnimationFinished()));
mAnimationTimeline->start();
}
mAlpha = 0;
}
CEventItem::~CEventItem()
{
if(mAnimated)
delete mAnimationTimeline;
}
void CEventItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option)
Q_UNUSED(widget)
QRectF EventRect = rect();
if(mAnimated)
mCurBrush->setColor(QColor(255,mAlpha,mAlpha,255));
painter->setBrush(*mCurBrush);
painter->setPen(Qt::black);
painter->drawRect(EventRect);
// QRectF textRect(CDVRect.adjusted(-3,-3,-3,-3));
// painter->drawRect(textRect);
int flags = Qt::AlignHCenter | Qt::AlignVCenter/* | Qt::TextWordWrap*/;
painter->setPen(Qt::black);
painter->setFont(mLabelFont);
painter->drawText(EventRect, flags, mLabel);
}
void CEventItem::SetLabel(QString Label)
{
mLabel = Label;
QSizeF Size;
Size = size();
QFontMetrics FontMetrics(mLabelFont);
Size.setWidth(FontMetrics.boundingRect(mLabel).width() + 10);
resize(Size);
}
void CEventItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
emit EventItemRightClicked(this);
}
}
void CEventItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event)
}
void CEventItem::UpdateAnimation(qreal value)
{
mAlpha = 255*value;
//update(QGraphicsItem::pos().x(),QGraphicsItem::pos().x(),40,25);
update();
}
void CEventItem::AnimationFinished()
{
mAnimationTimeline->toggleDirection();
mAnimationTimeline->start();
}