ZT/sources/GuiElements/SimpleTextBoxWidget.cpp

150 lines
4.0 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Widget animé qui affiche une boîte contenant du texte.
*/
/* ************************************************************************** */
/* Revision:
### 20121220 JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#include "SimpleTextBoxWidget.h"
#include <QtGui/QtGui>
#include <QRectF>
CSimpleTextBoxWidget::CSimpleTextBoxWidget(QGraphicsItem *parent)
: QGraphicsWidget(parent)
{
opacity = 1.0;
hide();
//mText = "TEst";
timeLine = new QTimeLine(500);
timeLine->setCurveShape(QTimeLine::EaseOutCurve);
connect(timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(setValue(qreal)));
resize(SCREEN_RES_WIDTH, SCREEN_RES_HEIGHT);
QTransform transform;
// transform.translate(160,120);
transform.translate(SCREEN_RES_WIDTH/2,SCREEN_RES_HEIGHT/2);
transform.scale(0,0);
//transform.translate(-160,-120);
transform.translate(-SCREEN_RES_WIDTH/2,-SCREEN_RES_HEIGHT/2);
setTransform(transform);
}
CSimpleTextBoxWidget::~CSimpleTextBoxWidget()
{
delete timeLine;
}
void CSimpleTextBoxWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
QRectF BoxRect;
BoxRect.setWidth(SCREEN_RES_WIDTH - 200);
BoxRect.setHeight(SCREEN_RES_HEIGHT - 200);
BoxRect.moveCenter(QPoint(SCREEN_RES_WIDTH/2,SCREEN_RES_HEIGHT/2));
// painter->setOpacity(opacity);
painter->setPen(QPen(Qt::black, 2));
painter->setBrush(QColor(245, 245, 255, 200));
painter->setClipRect(rect());
// painter->drawRoundRect(25, 10, SCREEN_RES_WIDTH - 200, SCREEN_RES_HEIGHT - 200);
painter->drawRoundRect(BoxRect);
QRectF textRect(BoxRect);
// textRect.moveCenter(QPoint(160,120));
int flags = Qt::AlignHCenter | Qt::AlignVCenter | Qt::TextWordWrap;
QFont font;
font.setPixelSize(30);
painter->setPen(Qt::black);
painter->setFont(font);
QString text = "Ceci est un test\nTexte multiligne";
painter->drawText(textRect, flags, mText);
//textRect.moveTop(textRect.top()+15);
//painter->drawText(textRect, flags, mCallerNumber);
}
//void CSimpleTextBoxWidget::mousePressEvent(QGraphicsSceneMouseEvent * event )
//{
// if(isVisible())
// {
// HideCallerID();
// event->accept();
// }
// else
// {
// event->ignore();
// }
//}
void CSimpleTextBoxWidget::setValue(qreal value)
{
QTransform transform;
//QRectF BoxRect = rect();
transform.translate(SCREEN_RES_WIDTH/2,SCREEN_RES_HEIGHT/2);
transform.scale(value,value);
transform.translate(-SCREEN_RES_WIDTH/2,-SCREEN_RES_HEIGHT/2);
setTransform(transform);
if(value == 0 && timeLine->direction()== QTimeLine::Backward)
{
hide();
}
}
void CSimpleTextBoxWidget::ShowTextBox()
{
show();
timeLine->setDirection(QTimeLine::Forward);
timeLine->start();
}
void CSimpleTextBoxWidget::HideTextBox()
{
timeLine->setDirection(QTimeLine::Backward);
timeLine->start();
//hide();
}
void CSimpleTextBoxWidget::InsertString(QString TextLine)
{
if(!mText.isEmpty())
mText += '\n';
mText += TextLine;
update(rect());
}
void CSimpleTextBoxWidget::ClearText()
{
mText.clear();
}