summaryrefslogtreecommitdiff
path: root/metawatch/metawatch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'metawatch/metawatch.cpp')
-rw-r--r--metawatch/metawatch.cpp92
1 files changed, 77 insertions, 15 deletions
diff --git a/metawatch/metawatch.cpp b/metawatch/metawatch.cpp
index 08b9890..e6a28f4 100644
--- a/metawatch/metawatch.cpp
+++ b/metawatch/metawatch.cpp
@@ -85,7 +85,8 @@ MetaWatch::MetaWatch(const QBluetoothAddress& address, QObject *parent) :
_connectAlignedTimer(new QSystemAlignedTimer(this)),
_sendTimer(new QTimer(this)),
_currentMode(IdleMode),
- _paintMode(IdleMode)
+ _paintMode(IdleMode),
+ _nMails(0), _nCalls(0), _nIms(0), _nSms(0)
{
QImage baseImage(screenWidth, screenHeight, QImage::Format_MonoLSB);
baseImage.setColor(0, QColor(Qt::white).rgb());
@@ -191,8 +192,25 @@ void MetaWatch::setDateTime(const QDateTime &dateTime)
void MetaWatch::updateNotificationCount(Notification::Type type, int count)
{
- Q_UNUSED(type);
- Q_UNUSED(count); // TODO
+ switch (type) {
+ case Notification::MissedCallNotification:
+ _nCalls = count;
+ break;
+ case Notification::EmailNotification:
+ _nMails = count;
+ break;
+ case Notification::ImNotification:
+ _nIms = count;
+ break;
+ case Notification::SmsNotification:
+ _nSms = count;
+ break;
+ default:
+ // Ignore
+ break;
+ }
+
+ renderIdleCounts();
}
void MetaWatch::vibrate(bool on)
@@ -202,7 +220,7 @@ void MetaWatch::vibrate(bool on)
void MetaWatch::showNotification(const Notification &n)
{
- Q_UNUSED(n); // TODO
+ qDebug() << "It's time for a notification" << n.title();
}
MetaWatch::Mode MetaWatch::currentMode() const
@@ -248,20 +266,64 @@ void MetaWatch::clear(Mode mode, bool black)
void MetaWatch::renderIdleScreen()
{
_paintMode = IdleMode;
+
+ QFont smallFont("MetaWatch Small caps 8pt", 6);
+ QImage idle_mail(QString(":/metawatch/graphics/idle_gmail.bmp"));
+ QImage idle_call(QString(":/metawatch/graphics/idle_call.bmp"));
+ QImage idle_sms(QString(":/metawatch/graphics/idle_sms.bmp"));
QPainter p(this);
+
p.fillRect(0, 0, screenWidth, screenHeight, Qt::white);
+
p.setPen(QPen(Qt::black, 1.0, Qt::DashLine));
- p.drawLine(0, systemAreaHeight + 2, screenWidth, systemAreaHeight + 2);
- p.drawLine(0, systemAreaHeight * 2 + 3, screenWidth, systemAreaHeight * 2 + 3);
- p.setPen(Qt::black);
- p.drawText(1, systemAreaHeight + 16, "Space Weather!");
- QImage idle_mail(QString(":/metawatch/idle_gmail.bmp"));
- QImage idle_call(QString(":/metawatch/idle_call.bmp"));
- QImage idle_sms(QString(":/metawatch/idle_sms.bmp"));
- p.drawImage(4, systemAreaHeight * 2 + 6, idle_mail);
- p.drawImage(32 + 4, systemAreaHeight * 2 + 6, idle_call);
- p.drawImage(32 * 2 + 4, systemAreaHeight * 2 + 6, idle_sms);
- p.drawText(14, 93, "Too many!");
+ p.drawLine(1, systemAreaHeight + 2, screenWidth - 2, systemAreaHeight + 2);
+ p.drawLine(1, systemAreaHeight * 2 + 3, screenWidth - 2, systemAreaHeight * 2 + 3);
+
+ p.drawImage(3, systemAreaHeight * 2 + 6, idle_mail);
+ p.drawImage(32 + 3, systemAreaHeight * 2 + 6, idle_call);
+ p.drawImage(32 * 2 + 3, systemAreaHeight * 2 + 6, idle_sms);
+
+ p.end();
+ renderIdleWeather();
+ renderIdleCounts();
+ _paintMode = _currentMode;
+}
+
+void MetaWatch::renderIdleWeather()
+{
+ _paintMode = IdleMode;
+ QFont smallFont("MetaWatch Small caps 8pt", 6);
+ QImage rain(QString(":/metawatch/graphics/weather_rain.bmp"));
+ QPainter p(this);
+
+ p.setFont(smallFont);
+ p.drawText(46, systemAreaHeight + 14, "Rain");
+ p.drawImage(screenWidth - 26, systemAreaHeight + 6, rain);
+
+ _paintMode = _currentMode;
+}
+
+void MetaWatch::renderIdleCounts()
+{
+ _paintMode = IdleMode;
+ QFont medFont("MetaWatch Large caps 8pt", 6);
+ QString s;
+ QPainter p(this);
+ QTextOption opt(Qt::AlignCenter);
+ const int y = systemAreaHeight * 2 + 25;
+ const int w = 24;
+ const int h = screenHeight - (y + 1);
+ const int mails = _nMails;
+ const int calls = _nCalls;
+ const int sms = _nSms + _nIms;
+
+ qDebug() << "unread counts" << mails << calls << sms;
+
+ p.setFont(medFont);
+ p.fillRect(QRect(0, y, screenWidth, h), Qt::white);
+ p.drawText(QRect(4, y, w, h), s.sprintf("%d", mails), opt);
+ p.drawText(QRect(32 + 4, y, w, h), s.sprintf("%d", calls), opt);
+ p.drawText(QRect(32 * 2 + 4, y, w, h), s.sprintf("%d", sms), opt);
}
quint16 MetaWatch::calcCrc(const QByteArray &data, int size)