[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