summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdriano Rezende <adriano.rezende@openbossa.org>2009-11-27 19:31:38 -0300
committerAdriano Rezende <adriano.rezende@openbossa.org>2009-11-27 19:31:38 -0300
commit016105adebe40907145eb46a80665681048140ef (patch)
treedd55c0500e28d0016bfb3595654df8d9fbcbdfb9
parentcdc1419bf4b010ee9b820956e284f372423fc585 (diff)
HyperUI: Added event labels to clock widget
-rw-r--r--hyperui/clockwidget.cpp57
-rw-r--r--hyperui/clockwidget.h6
-rw-r--r--hyperui/global.cpp12
-rw-r--r--hyperui/global.h5
-rw-r--r--hyperui/mainwindow.cpp44
-rw-r--r--hyperui/resource/640x360/hyperui.ini3
-rw-r--r--hyperui/resource/640x360/hyperui.qrc1
-rw-r--r--hyperui/resource/640x360/images/idle_line.pngbin0 -> 190 bytes
-rw-r--r--hyperui/resource/800x480/hyperui.ini3
-rw-r--r--hyperui/resource/800x480/hyperui.qrc1
-rw-r--r--hyperui/resource/800x480/images/idle_line.pngbin0 -> 173 bytes
11 files changed, 109 insertions, 23 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);
}
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 <QPainter>
#include <QPropertyAnimation>
#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 <QObject>
+#include <QString>
#include <QEasingCurve>
+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 @@
<file>hyperui.ini</file>
<file>contactlist.txt</file>
+ <file>images/idle_line.png</file>
<file>images/list_abc.png</file>
<file>images/list_abcmarker.png</file>
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
--- /dev/null
+++ b/hyperui/resource/640x360/images/idle_line.png
Binary files 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 @@
<file>hyperui.ini</file>
<file>contactlist.txt</file>
+ <file>images/idle_line.png</file>
<file>images/list_abc.png</file>
<file>images/list_abcmarker.png</file>
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
--- /dev/null
+++ b/hyperui/resource/800x480/images/idle_line.png
Binary files differ