summaryrefslogtreecommitdiffstats
path: root/hyperui/clockwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hyperui/clockwidget.cpp')
-rw-r--r--hyperui/clockwidget.cpp57
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);
}