diff options
Diffstat (limited to 'hyperui/clockwidget.cpp')
-rw-r--r-- | hyperui/clockwidget.cpp | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/hyperui/clockwidget.cpp b/hyperui/clockwidget.cpp index f6166ec..b6388b5 100644 --- a/hyperui/clockwidget.cpp +++ b/hyperui/clockwidget.cpp @@ -33,6 +33,7 @@ #include <QDateTime> #include <QRadialGradient> +#include "global.h" #include "dataresource.h" #include "clockwidget.h" @@ -40,18 +41,21 @@ class ClockEvent { public: - ClockEvent(const QDateTime &begin, const QDateTime &end, const QColor &color) - : begin(begin), end(end), color(color) { } + ClockEvent(const QDateTime &begin, const QDateTime &end, + const QColor &color, const QString &text) + : begin(begin), end(end), color(color), text(text) { } QDateTime begin; QDateTime end; QColor color; + QString text; }; ClockWidget::ClockWidget(QGraphicsItem *parent) : QGraphicsWidget(parent), m_background(Resource::pixmap("idle_clock_structure.png")), + m_divLine(Resource::pixmap("idle_line.png")), m_middleKnob(Resource::pixmap("idle_clock_pointers_middle.png")), m_hourPointer(Resource::pixmap("idle_clock_pointer_hour.png")), m_minutePointer(Resource::pixmap("idle_clock_pointer_minutes.png")) @@ -63,9 +67,14 @@ ClockWidget::ClockWidget(QGraphicsItem *parent) m_dayFont.setBold(true); m_dayFont.setPixelSize(Resource::intValue("clock-widget/day-font-size")); + m_labelFont = defaultFont; + m_labelFont.setPixelSize(Resource::intValue("clock-widget/label-font-size")); + m_weekDayFont = defaultFont; m_weekDayFont.setPixelSize(Resource::intValue("clock-widget/wday-font-size")); + m_labelHeight = Resource::intValue("clock-widget/label-height"); + m_labelPos = Resource::value("clock-widget/label-init-pos").toPoint(); m_knobPoint = Resource::value("clock-widget/knob-pos").toPoint(); m_middlePoint = Resource::value("clock-widget/middle-pos").toPoint(); m_dayRect = Resource::value("clock-widget/day-label-rect").toRect(); @@ -89,9 +98,9 @@ ClockWidget::~ClockWidget() } void ClockWidget::addEvent(const QDateTime &begin, const QDateTime &end, - const QColor &color) + const QColor &color, const QString &text) { - m_events.append(new ClockEvent(begin, end, color)); + m_events.append(new ClockEvent(begin, end, color, text)); updateEvents(); update(); } @@ -149,6 +158,46 @@ void ClockWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio // paint middle knob painter->drawPixmap(m_knobPoint, m_middleKnob); + int i = 0; + int bx = m_labelPos.x(); + int by = m_labelPos.y(); + int bw = m_divLine.width(); + + QString lastText; + QFont font = m_labelFont; + painter->drawPixmap(bx, by, m_divLine); + + // paint events descriptions + foreach (ClockEvent *event, m_events) { + // show different events + if (event->text == lastText) + continue; + + lastText = event->text; + + painter->setPen(event->color); + painter->setBrush(event->color); + painter->drawRoundedRect(bx + 4, by + 0.3 * m_labelHeight, + 0.1 * bw, 0.5 * m_labelHeight, 2, 2); + + font.setBold(true); + painter->setFont(font); + drawTextWithShadow(painter, bx + 0.13 * bw, by + 0.75 * m_labelHeight, + event->begin.toString("hh:mm"), Qt::white); + + font.setBold(false); + painter->setFont(font); + drawTextWithShadow(painter, bx + 0.3 * bw, by + 0.75 * m_labelHeight, + event->text, m_fontColor); + + painter->drawPixmap(bx, by + m_labelHeight, m_divLine); + + by += m_labelHeight; + + // show just two events + if (++i > 1) break; + } + // restore render hints painter->setRenderHints(hints); } |