summaryrefslogtreecommitdiff
path: root/harmaccuweather/harmaccuweather.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'harmaccuweather/harmaccuweather.cpp')
-rw-r--r--harmaccuweather/harmaccuweather.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/harmaccuweather/harmaccuweather.cpp b/harmaccuweather/harmaccuweather.cpp
new file mode 100644
index 0000000..9d7a00d
--- /dev/null
+++ b/harmaccuweather/harmaccuweather.cpp
@@ -0,0 +1,109 @@
+#include "harmaccuweather.h"
+
+using namespace sowatch;
+
+HarmAccuWeather::HarmAccuWeather(int updateTime, QObject *parent) :
+ WeatherNotification(parent),
+ _updateTimer(new QTimer(this)),
+ _lastUpdate(QDateTime::fromTime_t(0))
+{
+ connect(_updateTimer, SIGNAL(timeout()), SLOT(update()));
+ _updateTimer->setInterval(updateTime * 1000);
+ _updateTimer->start();
+ update();
+}
+
+QSettings* HarmAccuWeather::getAccuweatherData()
+{
+ return new QSettings("AccuWeather, Inc.", "awxapp");
+}
+
+Notification::Type HarmAccuWeather::type() const
+{
+ return Notification::WeatherNotification;
+}
+
+uint HarmAccuWeather::count() const
+{
+ return 1;
+}
+
+QDateTime HarmAccuWeather::dateTime() const
+{
+ return _lastUpdate;
+}
+
+QString HarmAccuWeather::title() const
+{
+ return _lastLocation;
+}
+
+QString HarmAccuWeather::body() const
+{
+ switch (_lastWxCode) {
+ case 33:
+ return tr("Clear");
+ case 6:
+ case 38:
+ return tr("Mostly cloudy");
+ case 35:
+ return tr("Part. cloudy");
+ case 7:
+ return tr("Cloudy");
+ default:
+ return QString("%1").arg(_lastWxCode);
+ }
+}
+
+WeatherNotification::WeatherType HarmAccuWeather::forecast()
+{
+ switch (_lastWxCode) {
+ case 33:
+ return Sunny;
+ case 6:
+ case 7:
+ case 35:
+ case 38:
+ return Cloudy;
+ default:
+ return UnknownWeather;
+ }
+}
+
+int HarmAccuWeather::temperature()
+{
+ return _lastTemp;
+}
+
+WeatherNotification::Unit HarmAccuWeather::temperatureUnits()
+{
+ return _metric ? Celsius : Fahrenheit;
+}
+
+void HarmAccuWeather::activate()
+{
+ // Launch accuweather?
+}
+
+void HarmAccuWeather::dismiss()
+{
+ // Do nothing
+}
+
+void HarmAccuWeather::update()
+{
+ QSettings* s = getAccuweatherData();
+
+ QDateTime lastUpdate = s->value("LastUpdate").toDateTime();
+ if (lastUpdate > _lastUpdate) {
+ qDebug() << "updated weather info";
+ _lastUpdate = lastUpdate;
+ _metric = s->value("useMetric").toBool();
+ _lastTemp = s->value("LastTemp").toInt();
+ _lastLocation = s->value("LastLocation").toString();
+ _lastWxCode = s->value("LastWxCode").toInt();
+ emit changed();
+ }
+
+ delete s;
+}