diff options
-rw-r--r-- | harmaccuweather/harmaccuweather.cpp | 7 | ||||
-rw-r--r-- | libsowatch/weathernotification.h | 1 | ||||
-rw-r--r-- | metawatch/metawatch.pro | 6 | ||||
-rw-r--r-- | metawatch/metawatch.qrc (renamed from metawatch/uires.qrc) | 0 | ||||
-rw-r--r-- | metawatch/metawatchdigital.cpp | 34 | ||||
-rw-r--r-- | metawatch/metawatchdigital.h | 13 |
6 files changed, 36 insertions, 25 deletions
diff --git a/harmaccuweather/harmaccuweather.cpp b/harmaccuweather/harmaccuweather.cpp index 158c115..99cc31b 100644 --- a/harmaccuweather/harmaccuweather.cpp +++ b/harmaccuweather/harmaccuweather.cpp @@ -13,7 +13,7 @@ HarmAccuWeather::HarmAccuWeather(QObject *parent) : _watcher->addPath("/home/user/.config/AccuWeather, Inc./awxapp.conf"); connect(_watcher, SIGNAL(fileChanged(QString)), SLOT(fileChanged(QString))); - _timer->setInterval(2000); + _timer->setInterval(5000); _timer->setSingleShot(true); connect(_timer, SIGNAL(timeout()), SLOT(update())); @@ -134,11 +134,13 @@ WeatherNotification::WeatherType HarmAccuWeather::forecast() switch (_lastWxCode) { case 1: case 2: - case 3: return Sunny; + case 3: case 4: case 5: + return PartlyCloudy; + case 6: case 7: case 8: @@ -174,6 +176,7 @@ WeatherNotification::WeatherType HarmAccuWeather::forecast() case 34: return Sunny; case 35: + return PartlyCloudy; case 36: case 37: case 38: diff --git a/libsowatch/weathernotification.h b/libsowatch/weathernotification.h index 3065a53..de3152a 100644 --- a/libsowatch/weathernotification.h +++ b/libsowatch/weathernotification.h @@ -15,6 +15,7 @@ public: enum WeatherType { UnknownWeather = 0, Sunny, + PartlyCloudy, Cloudy, Fog, Rain, diff --git a/metawatch/metawatch.pro b/metawatch/metawatch.pro index 96518da..3435bb5 100644 --- a/metawatch/metawatch.pro +++ b/metawatch/metawatch.pro @@ -31,7 +31,7 @@ FORMS += \ metawatchsimulatorform.ui RESOURCES += \ - uires.qrc + metawatch.qrc OTHER_FILES += \ idle_sms.bmp \ @@ -73,7 +73,3 @@ unix:!symbian { } INSTALLS += target } - - - - diff --git a/metawatch/uires.qrc b/metawatch/metawatch.qrc index 821a3dc..821a3dc 100644 --- a/metawatch/uires.qrc +++ b/metawatch/metawatch.qrc diff --git a/metawatch/metawatchdigital.cpp b/metawatch/metawatchdigital.cpp index 8a81f97..f35eab0 100644 --- a/metawatch/metawatchdigital.cpp +++ b/metawatch/metawatchdigital.cpp @@ -4,7 +4,8 @@ using namespace sowatch; MetaWatchDigital::MetaWatchDigital(const QBluetoothAddress& address, QSettings* settings, QObject *parent) : MetaWatch(address, settings, parent), - _nMails(0), _nCalls(0), _nIms(0), _nSms(0), _nMms(0) + _nMails(0), _nCalls(0), _nIms(0), _nSms(0), _nMms(0), + _wForecast(WeatherNotification::UnknownWeather) { QImage baseImage(screenWidth, screenHeight, QImage::Format_MonoLSB); baseImage.setColor(0, QColor(Qt::white).rgb()); @@ -75,8 +76,16 @@ void MetaWatchDigital::updateNotificationCount(Notification::Type type, int coun void MetaWatchDigital::updateWeather(WeatherNotification *weather) { + if (weather) { + _wForecast = weather->forecast(); + _wBody = weather->body(); + _wTemperature = weather->temperature(); + _wMetric = weather->temperatureUnits() == WeatherNotification::Celsius; + } else { + _wForecast = WeatherNotification::UnknownWeather; + } if (isConnected()) { - renderIdleWeather(weather); + renderIdleWeather(); } } @@ -159,7 +168,7 @@ void MetaWatchDigital::renderIdleScreen() renderIdleCounts(); } -void MetaWatchDigital::renderIdleWeather(WeatherNotification* w) +void MetaWatchDigital::renderIdleWeather() { _paintMode = IdleMode; QFont sf("MetaWatch Small caps 8pt", 6); @@ -171,35 +180,32 @@ void MetaWatchDigital::renderIdleWeather(WeatherNotification* w) p.fillRect(0, systemAreaHeight + 6, screenWidth, systemAreaHeight - 6, Qt::white); - if (w) { - QImage icon = iconForWeather(w); - bool metric = w->temperatureUnits() == WeatherNotification::Celsius; - QString unit = QString::fromUtf8(metric ? "°C" : "°F"); + if (_wForecast != WeatherNotification::UnknownWeather) { + QImage icon = iconForWeather(_wForecast); + QString unit = QString::fromUtf8(_wMetric ? "°C" : "°F"); QRect bodyRect(3, systemAreaHeight + 6, 36, systemAreaHeight - 6); QTextOption option; option.setAlignment(Qt::AlignLeft | Qt::AlignVCenter); option.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); p.setFont(sf); - p.drawText(bodyRect, w->body(), option); + p.drawText(bodyRect, _wBody, option); p.drawImage(36, systemAreaHeight + 6, icon); p.setFont(lf); - p.drawText(63, systemAreaHeight + 23, QString("%1 %2").arg(w->temperature()).arg(unit)); - } else { - p.setFont(sf); - p.drawText(32, systemAreaHeight + 18, tr("No data")); + p.drawText(63, systemAreaHeight + 23, QString("%1 %2").arg(_wTemperature).arg(unit)); } _paintMode = _currentMode; } -QImage MetaWatchDigital::iconForWeather(WeatherNotification *w) +QImage MetaWatchDigital::iconForWeather(WeatherNotification::WeatherType w) { - switch (w->forecast()) { + switch (w) { case WeatherNotification::Sunny: return QImage(QString(":/metawatch/graphics/weather_sunny.bmp")); + case WeatherNotification::PartlyCloudy: case WeatherNotification::Cloudy: case WeatherNotification::Fog: return QImage(QString(":/metawatch/graphics/weather_cloudy.bmp")); diff --git a/metawatch/metawatchdigital.h b/metawatch/metawatchdigital.h index a528eb2..7ce195b 100644 --- a/metawatch/metawatchdigital.h +++ b/metawatch/metawatchdigital.h @@ -31,14 +31,19 @@ public: void update(Mode mode, const QList<QRect>& rects = QList<QRect>()); protected: - // Notifications: Unread count - uint _nMails, _nCalls, _nIms, _nSms, _nMms; + // Idle screen: notifications unread count + ushort _nMails, _nCalls, _nIms, _nSms, _nMms; + // Idle screen: weather information + WeatherNotification::WeatherType _wForecast; + QString _wBody; + short _wTemperature; + bool _wMetric; void handleWatchConnected(); void renderIdleScreen(); - void renderIdleWeather(WeatherNotification *w = 0); - QImage iconForWeather(WeatherNotification *w); + void renderIdleWeather(); + QImage iconForWeather(WeatherNotification::WeatherType w); void renderIdleCounts(); void renderNotification(Notification *n); |