From e86bf7a875ed3decda48fc146598a19685a4a27d Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Sun, 16 Oct 2011 23:38:49 +0200 Subject: adding more weather descriptions --- harmaccuweather/harmaccuweather.cpp | 123 ++++++++++++++++++++++++++++++++++-- libsowatch/weathernotification.h | 1 + metawatch/metawatchdigital.cpp | 19 ++++-- 3 files changed, 130 insertions(+), 13 deletions(-) diff --git a/harmaccuweather/harmaccuweather.cpp b/harmaccuweather/harmaccuweather.cpp index 1306b6e..158c115 100644 --- a/harmaccuweather/harmaccuweather.cpp +++ b/harmaccuweather/harmaccuweather.cpp @@ -49,36 +49,145 @@ QString HarmAccuWeather::title() const QString HarmAccuWeather::body() const { switch (_lastWxCode) { + case 1: case 2: return tr("Sunny"); + case 3: - return tr("Partly sunny"); - case 33: - return tr("Clear"); + case 4: + case 5: + return tr("Partly cloudy"); case 6: - case 38: return tr("Mostly cloudy"); + case 7: + case 8: + return tr("Cloudy"); + + case 11: + return tr("Fog"); + + case 12: + return tr("Light rain"); + case 13: + case 14: + return tr("Light rain with sun"); + case 18: + case 26: + return tr("Heavy rain"); + + case 15: + case 16: + return tr("Thunderstorm"); + case 17: + return tr("Thunderstorm with sun"); + + case 19: + return tr("Light snow"); + case 20: + case 21: + return tr("Light snow with sun"); + case 22: + return tr("Heavy snow"); + case 29: + return tr("Heavy rain and snow"); + + case 25: + return tr("Blizzard"); + + case 30: + return tr("Hot"); + case 31: + return tr("Cold"); + case 32: + return tr("Wind"); + + + // Night versions + case 33: + case 34: + return tr("Clear"); case 35: return tr("Partly cloudy"); - case 7: + case 36: + case 37: + return tr("Mostly cloudy"); + case 38: return tr("Cloudy"); + case 39: + case 40: + return tr("Light rain"); + case 41: + case 42: + return tr("Thunderstorm"); + case 43: + return tr("Light snow"); + case 44: + return tr("Heavy snow"); + default: - return QString("%1").arg(_lastWxCode); + return QString("? %1").arg(_lastWxCode); } } WeatherNotification::WeatherType HarmAccuWeather::forecast() { switch (_lastWxCode) { + case 1: case 2: case 3: - case 33: return Sunny; + + case 4: + case 5: case 6: case 7: + case 8: + return Cloudy; + + case 11: + return Fog; + + case 12: + case 13: + case 14: + case 18: + case 26: + return Rain; + + case 15: + case 16: + case 17: + return Thunderstorm; + + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 29: + return Snow; + + // Night versions + case 33: + case 34: + return Sunny; case 35: + case 36: + case 37: case 38: return Cloudy; + case 39: + case 40: + return Rain; + case 41: + case 42: + return Thunderstorm; + case 43: + case 44: + return Snow; + default: return UnknownWeather; } diff --git a/libsowatch/weathernotification.h b/libsowatch/weathernotification.h index 0b511b4..3065a53 100644 --- a/libsowatch/weathernotification.h +++ b/libsowatch/weathernotification.h @@ -16,6 +16,7 @@ public: UnknownWeather = 0, Sunny, Cloudy, + Fog, Rain, Snow, Thunderstorm diff --git a/metawatch/metawatchdigital.cpp b/metawatch/metawatchdigital.cpp index ae13e49..df7d015 100644 --- a/metawatch/metawatchdigital.cpp +++ b/metawatch/metawatchdigital.cpp @@ -169,18 +169,24 @@ void MetaWatchDigital::renderIdleWeather(WeatherNotification* w) sf.setPixelSize(8); lf.setPixelSize(16); - p.fillRect(0, systemAreaHeight + 6, screenWidth, systemAreaHeight - 12, Qt::white); + 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"); - QRect bodyRect(4, systemAreaHeight + 6, 36, systemAreaHeight - 10); + + 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, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextWordWrap, w->body()); + p.drawText(bodyRect, w->body(), option); + p.drawImage(36, systemAreaHeight + 6, icon); + p.setFont(lf); - p.drawText(64, systemAreaHeight + 22, QString("%1 %2").arg(w->temperature()).arg(unit)); + 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")); @@ -195,13 +201,14 @@ QImage MetaWatchDigital::iconForWeather(WeatherNotification *w) case WeatherNotification::Sunny: return QImage(QString(":/metawatch/graphics/weather_sunny.bmp")); case WeatherNotification::Cloudy: + case WeatherNotification::Fog: return QImage(QString(":/metawatch/graphics/weather_cloudy.bmp")); case WeatherNotification::Rain: return QImage(QString(":/metawatch/graphics/weather_rain.bmp")); - case WeatherNotification::Snow: - return QImage(QString(":/metawatch/graphics/weather_snow.bmp")); case WeatherNotification::Thunderstorm: return QImage(QString(":/metawatch/graphics/weather_thunderstorm.bmp")); + case WeatherNotification::Snow: + return QImage(QString(":/metawatch/graphics/weather_snow.bmp")); default: return QImage(); } -- cgit v1.2.3