OSDN Git Service

plasma: implement condition icon for wetter.com provider
authorIvailo Monev <xakepa10@gmail.com>
Thu, 29 Jul 2021 16:52:16 +0000 (19:52 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Thu, 29 Jul 2021 16:52:16 +0000 (19:52 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
plasma/dataengines/weather/ions/noaa/ion_noaa.cpp
plasma/dataengines/weather/ions/wetter.com/ion_wettercom.cpp

index 2f33d0e..ffb8784 100644 (file)
@@ -477,13 +477,13 @@ void NOAAIon::updateWeather(const QString& source)
         QString weather = condition(source).toLower();
         ConditionIcons condition = getConditionIcon(weather, true);
         data.insert("Condition Icon", getWeatherIcon(condition));
-        kDebug() << "Using daytime icons\n";
+        kDebug() << "Using daytime icons";
     } else {
         // Night
         QString weather = condition(source).toLower();
         ConditionIcons condition = getConditionIcon(weather, false);
         data.insert("Condition Icon", getWeatherIcon(condition));
-        kDebug() << "Using nighttime icons\n";
+        kDebug() << "Using nighttime icons";
     }
 
     dataFields = temperature(source);
index 8b23c12..f10834a 100644 (file)
@@ -29,6 +29,7 @@
 #include "ion_wettercom.h"
 
 #include <KDebug>
+#include <KDateTime>
 #include <KLocalizedDate>
 #include <kunitconversion.h>
 
@@ -700,12 +701,15 @@ void WetterComIon::updateWeather(const QString& source, bool parseError)
     Plasma::DataEngine::Data data;
     data.insert("Place", m_place[source].displayName);
 
+    QString conditionIcon = "weather-none-available";
+
     if (!parseError && !m_weatherData[source].forecasts.isEmpty()) {
         data.insert("Station", m_place[source].displayName);
-        //data.insert("Condition Icon", "N/A");
         //data.insert("Temperature", "N/A");
         data.insert("Temperature Unit", QString::number(KTemperature::Celsius));
 
+        // TODO: data for day period (day or night), see:
+        // kde-extraapps/kdeplasma-addons/wallpapers/weather/TODO
         int i = 0;
         foreach(WeatherData::ForecastPeriod * forecastPeriod, m_weatherData[source].forecasts) {
             if (i > 0) {
@@ -727,6 +731,7 @@ void WetterComIon::updateWeather(const QString& source, bool parseError)
                             .arg(dayWeather.summary).arg(dayWeather.tempHigh)
                             .arg(dayWeather.tempLow).arg(dayWeather.probability));
                 i++;
+                conditionIcon = dayWeather.iconName;
 
                 if (forecastPeriod->hasNightWeather()) {
                     WeatherData::ForecastInfo nightWeather = forecastPeriod->getNightWeather();
@@ -738,6 +743,10 @@ void WetterComIon::updateWeather(const QString& source, bool parseError)
                                 .arg(nightWeather.tempLow)
                                 .arg(nightWeather.probability));
                     i++;
+                    const KDateTime localdt = KDateTime::currentLocalDateTime();
+                    if (localdt.isNightTime()) {
+                        conditionIcon = nightWeather.iconName;
+                    }
                 }
             }
         }
@@ -753,6 +762,8 @@ void WetterComIon::updateWeather(const QString& source, bool parseError)
         kDebug() << "Something went wrong when parsing weather data for source:" << source;
     }
 
+    data.insert("Condition Icon", conditionIcon);
+
     setData(weatherSource, data);
 }