promoe/TimeDisplay.cpp
2006-03-15 22:58:57 -04:00

102 lines
2.2 KiB
C++

#include "MainDisplay.h"
#include "TimeDisplay.h"
#include "NumberDisplay.h"
#include "MainWindow.h"
#include <QPen>
TimeDisplay::TimeDisplay (QWidget *parent, int time) : PixWidget (parent)
{
uint w = 12;//+78;
m_w = w;
m_pixmap = QPixmap (m_w, 13);
setMinimumSize (m_w, 13);
setMaximumSize (m_w, 13);
move (37, 26);
//FIXME: let this be the parent
/* XXX: colon disappear, how make transparent?
m_number_min = new NumberDisplay (this, 24, 0);
m_number_min->move (10, 0);
m_number_sec = new NumberDisplay (this, 24, 0);
m_number_sec->move (78-37, 0);
*/
m_number_min = new NumberDisplay (parent, this,24, 0);
m_number_min->move (37+10, 26);
m_number_sec = new NumberDisplay (parent, this,24, 0);
m_number_sec->move (78, 26);
connect (m_number_min, SIGNAL(clicked()), parent, SLOT(toggleTime()));
connect (m_number_sec, SIGNAL(clicked()), parent, SLOT(toggleTime()));
}
void TimeDisplay::setPixmaps (Skin *skin)
{
drawMinus();
m_number_min->setPixmaps (skin);
m_number_sec->setPixmaps (skin);
}
TimeDisplay::~TimeDisplay ()
{
}
void TimeDisplay::setTime (int time)
{
if (m_time == time) return;
m_time = time;
uint showtime = abs(time);
uint sec, min;
sec = (showtime / 1000) % 60;
min = (showtime / 1000) / 60;
m_number_min->setNumber (min / 10, min % 10);
m_number_sec->setNumber (sec / 10, sec % 10);
drawMinus ();
}
void
TimeDisplay::drawMinus ()
{
Skin *skin = Skin::getInstance ();
// Draw background
QBrush b (Qt::TexturePattern);
b.setTexture (skin->getNumber (10));
QPainter paint;
paint.begin (&m_pixmap);
paint.fillRect (m_pixmap.rect (), b);
MainDisplay *md = dynamic_cast<MainDisplay *>(parent());
if (md->getMW()->isTimemodeReverse()) {// draw a minus sign
if (skin->getNumberSize() < 12) { // Skin hasn't got any, draw a line in correct color.
QByteArray a = skin->getPLeditValue("normal");
QColor c;
c.setNamedColor(a);
QPen pen(c);
paint.setPen(pen);
paint.drawLine (3,6,8,6);
} else {
paint.drawPixmap (0, 0, skin->getNumber (11));
}
}
paint.end();
update ();
}
void
TimeDisplay::mousePressEvent (QMouseEvent *event)
{
}
void
TimeDisplay::mouseReleaseEvent (QMouseEvent *event)
{
emit clicked();
drawMinus ();
}