Digital timer fix

preferencesAboutTextFull
Anatoly Mihalchenko 12 years ago
parent 653201b63a
commit 3c0d021b2d
  1. 38
      src/domain/UBGraphicsItemDelegate.cpp
  2. 29
      src/domain/UBGraphicsItemDelegate.h

@ -727,7 +727,11 @@ void UBGraphicsToolBarItem::paint(QPainter *painter, const QStyleOptionGraphicsI
} }
MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent) MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent)
{} {
val = 0;
smallPoint = false;
setNumDigits(4);
}
MediaTimer::~MediaTimer() MediaTimer::~MediaTimer()
{} {}
@ -810,9 +814,7 @@ void MediaTimer::drawDigit(const QPoint &pos, QPainter &p, int segLen,
} }
} }
char* MediaTimer::getSegments(char ch) // gets list of segments for ch char MediaTimer::segments [][8] =
{
char segments[30][8] =
{ {
{ 0, 1, 2, 4, 5, 6,99, 0}, // 0 0 { 0, 1, 2, 4, 5, 6,99, 0}, // 0 0
{ 2, 5,99, 0, 0, 0, 0, 0}, // 1 1 { 2, 5,99, 0, 0, 0, 0, 0}, // 1 1
@ -827,16 +829,17 @@ char* MediaTimer::getSegments(char ch) // gets list of segments fo
{ 8, 9,99, 0, 0, 0, 0, 0}, // 10 : { 8, 9,99, 0, 0, 0, 0, 0}, // 10 :
{99, 0, 0, 0, 0, 0, 0, 0} // 11 empty {99, 0, 0, 0, 0, 0, 0, 0} // 11 empty
}; };
int n; const char* MediaTimer::getSegments(char ch) // gets list of segments for ch
{
if (ch >= '0' && ch <= '9') if (ch >= '0' && ch <= '9')
return segments[ch - '0']; return segments[ch - '0'];
if (ch == ':') if (ch == ':')
n = 10; return segments[10];
if (ch == ' ') if (ch == ' ')
n = 11; return segments[11];
return segments[n]; return NULL;
} }
void MediaTimer::drawSegment(const QPoint &pos, char segmentNo, QPainter &p, void MediaTimer::drawSegment(const QPoint &pos, char segmentNo, QPainter &p,
@ -986,15 +989,8 @@ void MediaTimer::addPoint(QPolygon &a, const QPoint &p)
} }
void MediaTimer::paint(QPainter *p, void MediaTimer::paint(QPainter *p,
const QStyleOptionGraphicsItem *option, QWidget *widget) const QStyleOptionGraphicsItem *, QWidget*)
{ {
Q_UNUSED(option);
Q_UNUSED(widget);
QFont f = p->font();
f.setPointSizeF(f.pointSizeF());
p->setFont(f);
if (smallPoint) if (smallPoint)
drawString(digitStr, *p, &points, false); drawString(digitStr, *p, &points, false);
else else
@ -1058,13 +1054,6 @@ void MediaTimer::internalSetString(const QString& s)
update(); update();
} }
void MediaTimer::init()
{
val = 0;
smallPoint = false;
setNumDigits(4);
}
void MediaTimer::display(const QString &s) void MediaTimer::display(const QString &s)
{ {
val = 0; val = 0;
@ -1132,7 +1121,6 @@ DelegateMediaControl::DelegateMediaControl(UBGraphicsMediaItem* pDelegated, QGra
setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control));
lcdTimer = new MediaTimer(this); lcdTimer = new MediaTimer(this);
lcdTimer->init();
update(); update();
} }

@ -71,33 +71,40 @@ class DelegateButton: public QGraphicsSvgItem
}; };
/*
Code of this class is copied from QT QLCDNumber class sources
See src\gui\widgets\qlcdnumber.cpp for original code
*/
class MediaTimer: public QGraphicsRectItem class MediaTimer: public QGraphicsRectItem
{ {
public: public:
MediaTimer(QGraphicsItem * parent = 0); MediaTimer(QGraphicsItem * parent = 0);
~MediaTimer(); ~MediaTimer();
char* getSegments(char);
void addPoint(QPolygon&, const QPoint&);
void init();
void internalSetString(const QString& s);
void drawString(const QString& s, QPainter &, QBitArray * = 0, bool = true);
void drawDigit(const QPoint &, QPainter &, int, char, char = ' ');
void drawSegment(const QPoint &, char, QPainter &, int, bool = false);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget); QWidget *widget);
void display(const QString &str); void display(const QString &str);
void setNumDigits(int nDigits);
private: private:
static const char* getSegments(char);
void drawString(const QString& s, QPainter &, QBitArray * = 0, bool = true);
void drawDigit(const QPoint &, QPainter &, int, char, char = ' ');
void drawSegment(const QPoint &, char, QPainter &, int, bool = false);
void addPoint(QPolygon&, const QPoint&);
void internalSetString(const QString& s);
void setNumDigits(int nDigits);
static char segments [][8];
int ndigits; int ndigits;
QString digitStr; QString digitStr;
QBitArray points; QBitArray points;
double val; double val;
uint shadow : 1; uint shadow : 1;
uint smallPoint : 1; uint smallPoint : 1;
}; };
class DelegateMediaControl: public QObject, public QGraphicsRectItem class DelegateMediaControl: public QObject, public QGraphicsRectItem

Loading…
Cancel
Save