From 016105adebe40907145eb46a80665681048140ef Mon Sep 17 00:00:00 2001 From: Adriano Rezende Date: Fri, 27 Nov 2009 19:31:38 -0300 Subject: HyperUI: Added event labels to clock widget --- hyperui/clockwidget.cpp | 57 ++++++++++++++++++++++++-- hyperui/clockwidget.h | 6 ++- hyperui/global.cpp | 12 ++++++ hyperui/global.h | 5 +++ hyperui/mainwindow.cpp | 44 ++++++++++++-------- hyperui/resource/640x360/hyperui.ini | 3 ++ hyperui/resource/640x360/hyperui.qrc | 1 + hyperui/resource/640x360/images/idle_line.png | Bin 0 -> 190 bytes hyperui/resource/800x480/hyperui.ini | 3 ++ hyperui/resource/800x480/hyperui.qrc | 1 + hyperui/resource/800x480/images/idle_line.png | Bin 0 -> 173 bytes 11 files changed, 109 insertions(+), 23 deletions(-) create mode 100644 hyperui/resource/640x360/images/idle_line.png create mode 100644 hyperui/resource/800x480/images/idle_line.png 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 #include +#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); } diff --git a/hyperui/clockwidget.h b/hyperui/clockwidget.h index e076707..62a1890 100644 --- a/hyperui/clockwidget.h +++ b/hyperui/clockwidget.h @@ -49,7 +49,7 @@ public: ~ClockWidget(); void addEvent(const QDateTime &begin, const QDateTime &end, - const QColor &color); + const QColor &color, const QString &text); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); @@ -60,16 +60,20 @@ private slots: private: QFont m_dayFont; + QFont m_labelFont; QFont m_weekDayFont; QColor m_fontColor; QPixmap m_background; + QPixmap m_divLine; QTimer m_timer; QPoint m_knobPoint; QPoint m_middlePoint; + QPoint m_labelPos; QRectF m_dayRect; QRectF m_weekDayRect; QRect m_eventsPixmapRect; + int m_labelHeight; int m_eventsInnerOffset; int m_eventsInnerDiameter; diff --git a/hyperui/global.cpp b/hyperui/global.cpp index 6c4873c..784cb6b 100644 --- a/hyperui/global.cpp +++ b/hyperui/global.cpp @@ -29,10 +29,22 @@ ** ****************************************************************************/ +#include #include #include "global.h" + +void drawTextWithShadow(QPainter *painter, int x, int y, + const QString &text, const QColor &color) +{ + painter->setPen(QColor(30, 30, 30)); + painter->drawText(x + 2, y + 2, text); + + painter->setPen(color); + painter->drawText(x, y, text); +} + QPropertyAnimation *propertyAnimation(QObject *obj, const char *property, int time, QEasingCurve::Type type) { diff --git a/hyperui/global.h b/hyperui/global.h index c28e282..7fb0237 100644 --- a/hyperui/global.h +++ b/hyperui/global.h @@ -33,10 +33,15 @@ #define GLOBAL_H #include +#include #include +class QPainter; class QPropertyAnimation; +void drawTextWithShadow(QPainter *painter, int x, int y, + const QString &text, const QColor &color); + QPropertyAnimation *propertyAnimation(QObject *obj, const char *property, int time, QEasingCurve::Type type = QEasingCurve::Linear); diff --git a/hyperui/mainwindow.cpp b/hyperui/mainwindow.cpp index 2606579..4bf104d 100644 --- a/hyperui/mainwindow.cpp +++ b/hyperui/mainwindow.cpp @@ -116,24 +116,32 @@ void MainWindow::createDummyDailyEvents() const QDate &cd = QDate::currentDate(); - m_clockWidget->addEvent(QDateTime(cd, QTime(3, 20, 0)), - QDateTime(cd, QTime(4, 30, 0)), color1); - m_clockWidget->addEvent(QDateTime(cd, QTime(4, 34, 0)), - QDateTime(cd, QTime(5, 15, 0)), color1); - m_clockWidget->addEvent(QDateTime(cd, QTime(5, 19, 0)), - QDateTime(cd, QTime(6, 17, 0)), color1); - m_clockWidget->addEvent(QDateTime(cd, QTime(6, 25, 0)), - QDateTime(cd, QTime(6, 53, 0)), color1); - - m_clockWidget->addEvent(QDateTime(cd, QTime(7, 55, 0)), - QDateTime(cd, QTime(8, 45, 0)), color2); - m_clockWidget->addEvent(QDateTime(cd, QTime(9, 25, 0)), - QDateTime(cd, QTime(10, 20, 0)), color2); - - m_clockWidget->addEvent(QDateTime(cd, QTime(6, 40, 0)), - QDateTime(cd, QTime(7, 20, 0)), color3); - m_clockWidget->addEvent(QDateTime(cd, QTime(7, 24, 0)), - QDateTime(cd, QTime(8, 20, 0)), color3); + m_clockWidget->addEvent(QDateTime(cd, QTime(15, 20, 0)), + QDateTime(cd, QTime(16, 30, 0)), color1, + tr("Development Meeting")); + m_clockWidget->addEvent(QDateTime(cd, QTime(16, 34, 0)), + QDateTime(cd, QTime(17, 15, 0)), color1, + tr("Development Meeting")); + m_clockWidget->addEvent(QDateTime(cd, QTime(17, 19, 0)), + QDateTime(cd, QTime(18, 17, 0)), color1, + tr("Development Meeting")); + m_clockWidget->addEvent(QDateTime(cd, QTime(18, 25, 0)), + QDateTime(cd, QTime(18, 53, 0)), color1, + tr("Development Meeting")); + + m_clockWidget->addEvent(QDateTime(cd, QTime(18, 40, 0)), + QDateTime(cd, QTime(19, 20, 0)), color3, + tr("Project Presentation")); + m_clockWidget->addEvent(QDateTime(cd, QTime(19, 24, 0)), + QDateTime(cd, QTime(20, 20, 0)), color3, + tr("Project Presentation")); + + m_clockWidget->addEvent(QDateTime(cd, QTime(19, 55, 0)), + QDateTime(cd, QTime(20, 45, 0)), color2, + tr("Dinner with Managers")); + m_clockWidget->addEvent(QDateTime(cd, QTime(21, 25, 0)), + QDateTime(cd, QTime(22, 20, 0)), color2, + tr("Dinner with Managers")); } void MainWindow::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, diff --git a/hyperui/resource/640x360/hyperui.ini b/hyperui/resource/640x360/hyperui.ini index d25b9a7..f1d35e1 100644 --- a/hyperui/resource/640x360/hyperui.ini +++ b/hyperui/resource/640x360/hyperui.ini @@ -34,6 +34,9 @@ main-icon-out-pos=@Point(-355 638) [clock-widget] update-timeout=5000 font-color=#9FA3AC +label-height=30 +label-font-size=17 +label-init-pos=@Point(30 382) knob-pos=@Point(168 187) middle-pos=@Point(179 197) day-font-size=26 diff --git a/hyperui/resource/640x360/hyperui.qrc b/hyperui/resource/640x360/hyperui.qrc index 293ca9a..cb4e9dc 100644 --- a/hyperui/resource/640x360/hyperui.qrc +++ b/hyperui/resource/640x360/hyperui.qrc @@ -3,6 +3,7 @@ hyperui.ini contactlist.txt + images/idle_line.png images/list_abc.png images/list_abcmarker.png diff --git a/hyperui/resource/640x360/images/idle_line.png b/hyperui/resource/640x360/images/idle_line.png new file mode 100644 index 0000000..4e3f42b Binary files /dev/null and b/hyperui/resource/640x360/images/idle_line.png differ diff --git a/hyperui/resource/800x480/hyperui.ini b/hyperui/resource/800x480/hyperui.ini index ce687ed..555ba15 100644 --- a/hyperui/resource/800x480/hyperui.ini +++ b/hyperui/resource/800x480/hyperui.ini @@ -34,6 +34,9 @@ main-icon-out-pos=@Point(-444 900) [clock-widget] update-timeout=5000 font-color=#9FA3AC +label-height=40 +label-font-size=23 +label-init-pos=@Point(40 510) knob-pos=@Point(225 250) middle-pos=@Point(238 264) day-font-size=35 diff --git a/hyperui/resource/800x480/hyperui.qrc b/hyperui/resource/800x480/hyperui.qrc index 293ca9a..cb4e9dc 100644 --- a/hyperui/resource/800x480/hyperui.qrc +++ b/hyperui/resource/800x480/hyperui.qrc @@ -3,6 +3,7 @@ hyperui.ini contactlist.txt + images/idle_line.png images/list_abc.png images/list_abcmarker.png diff --git a/hyperui/resource/800x480/images/idle_line.png b/hyperui/resource/800x480/images/idle_line.png new file mode 100644 index 0000000..5d0f4b0 Binary files /dev/null and b/hyperui/resource/800x480/images/idle_line.png differ -- cgit v1.2.3