[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/dataengines/weather/ions
From:       Shawn Starr <shawn.starr () rogers ! com>
Date:       2008-09-26 5:37:49
Message-ID: 1222407469.192922.3565.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 864935 by spstarr:

Port bbcukmet ion to new changes. Doesn't return an icon yet because we don't yet \
have a way of determing time period.

 M  +67 -22    ion_bbcukmet.cpp  
 M  +14 -3     ion_bbcukmet.h  


--- trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/ion_bbcukmet.cpp \
#864934:864935 @@ -41,7 +41,6 @@
     QHash<QString, UKMETIon::Private::XMLMapInfo> m_place;
     QVector<QString> m_locations;
     QStringList m_matchLocations;
-    bool isValid;
 
 public:
     // Weather information
@@ -60,7 +59,7 @@
     KUrl *m_url;
     KIO::TransferJob *m_job;
 
-    int m_timezoneType;  // Ion option: Timezone may be local time or UTC time
+    QDateTime m_dateFormat;
 };
 
 
@@ -93,6 +92,43 @@
     setInitialized(true);
 }
 
+QMap<QString,IonInterface::ConditionIcons> UKMETIon::setupDayIconMappings(void)
+{
+//    ClearDay, FewCloudsDay, PartlyCloudyDay, Overcast,
+//    Showers, ScatteredShowers, Thunderstorm, Snow,
+//    FewCloudsNight, PartlyCloudyNight, ClearNight,
+//    Mist, NotAvailable
+
+      QMap<QString,ConditionIcons> dayList;
+      dayList["sunny"] = ClearDay;
+      dayList["sunny intervals"] = PartlyCloudyDay;
+      dayList["partly cloudy"] = PartlyCloudyDay;
+      dayList["cloudy"] = Overcast;
+      dayList["light showers"] = ScatteredShowers;
+      return dayList;
+}
+
+QMap<QString,IonInterface::ConditionIcons> UKMETIon::setupNightIconMappings(void)
+{
+      QMap<QString,ConditionIcons> nightList;
+      nightList["cloudy"] = Overcast;
+      nightList["partly cloudy"] = PartlyCloudyNight;
+      nightList["light showers"] = ScatteredShowers;
+      return nightList;
+}
+
+QMap<QString,IonInterface::ConditionIcons> const& UKMETIon::dayIcons(void)
+{
+    static QMap<QString,ConditionIcons> const dval = setupDayIconMappings();
+    return dval;
+}
+
+QMap<QString,IonInterface::ConditionIcons> const& UKMETIon::nightIcons(void)
+{
+    static QMap<QString,ConditionIcons> const nval = setupNightIconMappings();
+    return nval;
+}
+
 // Get a specific Ion's data
 bool UKMETIon::updateIonSource(const QString& source)
 {
@@ -473,6 +509,11 @@
                 QStringList conditionData = conditionString.split(":");
 
                 data.obsTime = conditionData[0];
+                kDebug() << "OBSERVATION TIME: " << data.obsTime;
+                kDebug() << QDateTime::fromString("0300 GMT", "hhmm \
'GMT'").toLocalTime(); +
+                // Friday at 0200 GMT
+                
                 data.condition = conditionData[1].split(".")[0].trimmed();
             } else if (xml.name() == "link") {
                 d->m_place[source].XMLforecastURL = xml.readElementText();
@@ -623,23 +664,6 @@
     delete forecast;
 }
 
-// Not used in this ion yet.
-void UKMETIon::setTimezoneFormat(const QString& tz)
-{
-    d->m_timezoneType = tz.toInt(); // Boolean
-}
-
-// Not used in this ion yet.
-bool UKMETIon::timezone()
-{
-    if (d->m_timezoneType) {
-        return true;
-    }
-
-    // Not UTC, local time
-    return false;
-}
-
 void UKMETIon::validate(const QString& source)
 {
     bool beginflag = true;
@@ -687,6 +711,13 @@
     setData(weatherSource, "Observation Period", observationTime(source));
     setData(weatherSource, "Current Conditions", condition(source));
 
+    // Tell applet which icon to use for conditions and provide mapping for \
condition type to the icons to display +    if (night(source) && periodHour(source) \
>= 4) { +        setData(source, "Condition Icon", getWeatherIcon(nightIcons(), \
> condition(source)));
+    } else {
+        setData(source, "Condition Icon", getWeatherIcon(dayIcons(), \
condition(source))); +    }
+
     setData(weatherSource, "Humidity", humidity(source));
     setData(weatherSource, "Visibility", visibility(source));
 
@@ -713,9 +744,9 @@
     foreach(const QString &forecastItem, forecastList) {
         fieldList = forecastItem.split('|');
 
-        setData(weatherSource, QString("Short Forecast Day %1").arg(i), \
QString("%1|%2|%3|%4|%5") \ +        setData(weatherSource, QString("Short Forecast \
                Day %1").arg(i), QString("%1|%2|%3|%4|%5|%6") \
                 .arg(fieldList[0]).arg(fieldList[1]).arg(fieldList[2]).arg(fieldList[3]) \
                \
-                .arg(fieldList[4]));
+                .arg(fieldList[4]).arg(fieldList[5]));
         i++;
     }
 
@@ -737,6 +768,19 @@
     return d->m_weatherData[source].obsTime;
 }
 
+bool UKMETIon::night(const QString& source)
+{
+    if (d->m_weatherData[source].iconPeriodAP == "pm") {
+        return true;
+    }
+    return false;
+}
+
+int UKMETIon::periodHour(const QString& source)
+{
+    return d->m_weatherData[source].iconPeriodHour.toInt();
+}
+
 QString UKMETIon::condition(const QString& source)
 {
     return d->m_weatherData[source].condition;
@@ -826,8 +870,9 @@
             d->m_weatherData[source].forecasts[i]->period.replace("Friday", "Fri");
         }
 
-        forecastData.append(QString("%1|%2|%3|%4|%5") \
+        forecastData.append(QString("%1|%2|%3|%4|%5|%6") \
                             .arg(d->m_weatherData[source].forecasts[i]->period) \
+                            .arg(d->m_weatherData[source].forecasts[i]->iconName) \
                             .arg(d->m_weatherData[source].forecasts[i]->summary) \
                             .arg(d->m_weatherData[source].forecasts[i]->tempHigh) \
                             .arg(d->m_weatherData[source].forecasts[i]->tempLow) \
--- trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/ion_bbcukmet.h \
#864934:864935 @@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2007 by Shawn Starr <shawn.starr@rogers.com>            *
+ *   Copyright (C) 2007-2008 by Shawn Starr <shawn.starr@rogers.com>       *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -25,6 +25,7 @@
 #include <QtXml/QXmlStreamReader>
 #include <QRegExp>
 #include <QtCore/QStringList>
+#include <QDateTime>
 #include <QDebug>
 #include <kurl.h>
 #include <kio/job.h>
@@ -42,6 +43,9 @@
     QString stationName;
     // Current observation information.
     QString obsTime;
+    QString iconPeriodHour;
+    QString iconPeriodAP;
+
     QString condition;
     QString temperature_C;
     QString temperature_F;
@@ -55,6 +59,7 @@
     // Five day forecast
     struct ForecastInfo {
         QString period;
+        QString iconName;
         QString summary;
         int tempHigh;
         int tempLow;
@@ -74,14 +79,14 @@
     UKMETIon(QObject *parent, const QVariantList &args);
     ~UKMETIon();
     void init();  // Setup the city location, fetching the correct URL name.
-    bool timezone(void);
-    void setTimezoneFormat(const QString& tz);
     bool updateIonSource(const QString& source);
     void updateWeather(const QString& source);
 
     QString place(const QString& source);
     QString station(const QString& source);
     QString observationTime(const QString& source);
+    bool night(const QString& source);
+    int periodHour(const QString& source);
     QString condition(const QString& source);
     QMap<QString, QString> temperature(const QString& source);
     QMap<QString, QString> wind(const QString& source);
@@ -102,6 +107,12 @@
 private:
     /* UKMET Methods - Internal for Ion */
 
+    QMap<QString,ConditionIcons> setupDayIconMappings(void);
+    QMap<QString,ConditionIcons> setupNightIconMappings(void);
+
+    QMap<QString,ConditionIcons> const& nightIcons(void);
+    QMap<QString,ConditionIcons> const& dayIcons(void);
+
     // Load and Parse the place search XML listings
     void findPlace(const QString& place, const QString& source);
     void validate(const QString& source); // Sync data source with Applet


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic