summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--harmaccuweather/harmaccuweather.cpp123
-rw-r--r--libsowatch/weathernotification.h1
-rw-r--r--metawatch/metawatchdigital.cpp19
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();
}