fix #73
I suppose the better way is to move weather adaptor to another open weather engine despite the fact that OWM has provided me a special FOSS permissions. I've changed weather provider to Yahoo! Weather because there is no good way to provide my own API key to end-users except for being compiled to the source code. In other hand this solution leads to the fact that humidity and atmosphere pressure is not available for forecast more. And moreover pressure units has been changed for current weather. + fix possible memory leak in dataengine aggregator + add "special thanks" group to acknoledgment tab
@ -1,139 +1,113 @@
|
||||
{
|
||||
"__url": "http://openweathermap.org/weather-conditions",
|
||||
"__url": "https://developer.yahoo.com/weather/documentation.html",
|
||||
|
||||
"image": {
|
||||
"__comment": "should be described as html image with full path inside",
|
||||
|
||||
"default": "",
|
||||
"default": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3200.gif\">",
|
||||
|
||||
"800": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/01d.png\">",
|
||||
|
||||
"801": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/02d.png\">",
|
||||
|
||||
"802": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/03d.png\">",
|
||||
"803": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/03d.png\">",
|
||||
|
||||
"804": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/04d.png\">",
|
||||
|
||||
"300": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"301": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"302": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"310": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"311": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"312": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"313": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"314": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"321": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"520": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"521": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"522": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
"531": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/09d.png\">",
|
||||
|
||||
"500": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">",
|
||||
"501": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">",
|
||||
"502": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">",
|
||||
"503": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">",
|
||||
"504": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10d.png\">",
|
||||
|
||||
"200": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"201": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"202": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"210": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"211": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"212": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"221": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"230": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"231": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
"232": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11d.png\">",
|
||||
|
||||
"511": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"600": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"601": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"602": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"611": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"612": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"615": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"616": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"620": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"621": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
"622": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13d.png\">",
|
||||
|
||||
"701": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"711": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"721": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"731": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"741": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"751": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"761": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"762": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"771": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">",
|
||||
"781": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/50d.png\">"
|
||||
"0": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/0.gif\">",
|
||||
"1": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/1.gif\">",
|
||||
"2": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/2.gif\">",
|
||||
"3": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3.gif\">",
|
||||
"4": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/4.gif\">",
|
||||
"5": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/5.gif\">",
|
||||
"6": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/6.gif\">",
|
||||
"7": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/7.gif\">",
|
||||
"8": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/8.gif\">",
|
||||
"9": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/9.gif\">",
|
||||
"10": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/10.gif\">",
|
||||
"11": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/11.gif\">",
|
||||
"12": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/12.gif\">",
|
||||
"13": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/13.gif\">",
|
||||
"14": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/14.gif\">",
|
||||
"15": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/15.gif\">",
|
||||
"16": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/16.gif\">",
|
||||
"17": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/17.gif\">",
|
||||
"18": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/18.gif\">",
|
||||
"19": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/19.gif\">",
|
||||
"20": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/20.gif\">",
|
||||
"21": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/21.gif\">",
|
||||
"22": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/22.gif\">",
|
||||
"23": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/23.gif\">",
|
||||
"24": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/24.gif\">",
|
||||
"25": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/25.gif\">",
|
||||
"26": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/26.gif\">",
|
||||
"27": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/27.gif\">",
|
||||
"28": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/28.gif\">",
|
||||
"29": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/29.gif\">",
|
||||
"30": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/30.gif\">",
|
||||
"31": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/31.gif\">",
|
||||
"32": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/32.gif\">",
|
||||
"33": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/33.gif\">",
|
||||
"34": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/34.gif\">",
|
||||
"35": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/35.gif\">",
|
||||
"36": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/36.gif\">",
|
||||
"37": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/37.gif\">",
|
||||
"38": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/38.gif\">",
|
||||
"39": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/39.gif\">",
|
||||
"40": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/40.gif\">",
|
||||
"41": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/41.gif\">",
|
||||
"42": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/42.gif\">",
|
||||
"43": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/43.gif\">",
|
||||
"44": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/44.gif\">",
|
||||
"45": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/45.gif\">",
|
||||
"46": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/46.gif\">",
|
||||
"47": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/47.gif\">",
|
||||
"3200": "<img src=\"@CMAKE_INSTALL_PREFIX@/@DATA_INSTALL_DIR@/@PROJECT_NAME@/weather/3200.gif\">"
|
||||
},
|
||||
|
||||
"text": {
|
||||
"default": "\u2604",
|
||||
"3200": "\u2604",
|
||||
|
||||
"800": "\u2600",
|
||||
|
||||
"801": "\u26C5",
|
||||
|
||||
"802": "\u2601",
|
||||
"803": "\u2601",
|
||||
|
||||
"804": "\u2601",
|
||||
|
||||
"300": "\u2602",
|
||||
"301": "\u2602",
|
||||
"302": "\u2602",
|
||||
"310": "\u2602",
|
||||
"311": "\u2602",
|
||||
"312": "\u2602",
|
||||
"313": "\u2602",
|
||||
"314": "\u2602",
|
||||
"321": "\u2602",
|
||||
"520": "\u2602",
|
||||
"521": "\u2602",
|
||||
"522": "\u2602",
|
||||
"531": "\u2602",
|
||||
|
||||
"500": "\u2614",
|
||||
"501": "\u2614",
|
||||
"502": "\u2614",
|
||||
"503": "\u2614",
|
||||
"504": "\u2614",
|
||||
|
||||
"200": "\u2608",
|
||||
"201": "\u2608",
|
||||
"202": "\u2608",
|
||||
"210": "\u2608",
|
||||
"211": "\u2608",
|
||||
"212": "\u2608",
|
||||
"221": "\u2608",
|
||||
"230": "\u2608",
|
||||
"231": "\u2608",
|
||||
"232": "\u2608",
|
||||
|
||||
"511": "\u2603",
|
||||
"600": "\u2603",
|
||||
"601": "\u2603",
|
||||
"602": "\u2603",
|
||||
"611": "\u2603",
|
||||
"612": "\u2603",
|
||||
"615": "\u2603",
|
||||
"616": "\u2603",
|
||||
"620": "\u2603",
|
||||
"621": "\u2603",
|
||||
"622": "\u2603",
|
||||
|
||||
"701": "\u26C5",
|
||||
"711": "\u26C5",
|
||||
"721": "\u26C5",
|
||||
"731": "\u26C5",
|
||||
"741": "\u26C5",
|
||||
"751": "\u26C5",
|
||||
"761": "\u26C5",
|
||||
"762": "\u26C5",
|
||||
"771": "\u26C5",
|
||||
"781": "\u26C5"
|
||||
"0": "\u2604",
|
||||
"1": "\u2604",
|
||||
"2": "\u2604",
|
||||
"3": "\u26C8",
|
||||
"4": "\u26C8",
|
||||
"5": "\u2614",
|
||||
"6": "\u2614",
|
||||
"7": "\u2614",
|
||||
"8": "\u2614",
|
||||
"9": "\u2614",
|
||||
"10": "\u2614",
|
||||
"11": "\u2614",
|
||||
"12": "\u2614",
|
||||
"13": "\u26C4",
|
||||
"14": "\u26C7",
|
||||
"15": "\u26C7",
|
||||
"16": "\u2614",
|
||||
"17": "\u2614",
|
||||
"18": "\u2614",
|
||||
"19": "\u26C5",
|
||||
"20": "\u26C5",
|
||||
"21": "\u26C5",
|
||||
"22": "\u26C5",
|
||||
"23": "\u26C5",
|
||||
"24": "\u26C5",
|
||||
"25": "\u26C5",
|
||||
"26": "\u2601",
|
||||
"27": "\u2601",
|
||||
"28": "\u2601",
|
||||
"29": "\u2601",
|
||||
"30": "\u2601",
|
||||
"31": "\u263D",
|
||||
"32": "\u2600",
|
||||
"33": "\u263D",
|
||||
"34": "\u2600",
|
||||
"35": "\u2614",
|
||||
"36": "\u2600",
|
||||
"37": "\u26C8",
|
||||
"38": "\u26C8",
|
||||
"39": "\u26C8",
|
||||
"40": "\u26C7",
|
||||
"41": "\u26C7",
|
||||
"42": "\u26C7",
|
||||
"43": "\u26C7",
|
||||
"44": "\u2601",
|
||||
"45": "\u26C8",
|
||||
"46": "\u26C7",
|
||||
"47": "\u26C8"
|
||||
}
|
||||
}
|
||||
|
@ -279,8 +279,7 @@ get quotes for the instrument. Refer to <a href=\"http://finance.yahoo.com/\">\
|
||||
|
||||
QString ExtQuotes::url() const
|
||||
{
|
||||
QString apiUrl = QString(YAHOO_URL);
|
||||
apiUrl.replace(QString("$TICKER"), m_ticker);
|
||||
QString apiUrl = QString(YAHOO_QUOTES_URL).arg(m_ticker);
|
||||
qCInfo(LOG_LIB) << "API url" << apiUrl;
|
||||
|
||||
return apiUrl;
|
||||
|
@ -22,10 +22,10 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#define YAHOO_URL \
|
||||
#define YAHOO_QUOTES_URL \
|
||||
"https://query.yahooapis.com/v1/public/yql?q=select * from " \
|
||||
"yahoo.finance.quotes where " \
|
||||
"symbol=\"$TICKER\"&env=store://datatables.org/" \
|
||||
"symbol=\"%1\"&env=store://datatables.org/" \
|
||||
"alltableswithkeys&format=json"
|
||||
|
||||
|
||||
|
@ -235,9 +235,8 @@ QVariantHash ExtWeather::run()
|
||||
if (times == 1) {
|
||||
qCInfo(LOG_LIB) << "Send request";
|
||||
isRunning = true;
|
||||
QNetworkReply *reply
|
||||
= manager->get(QNetworkRequest(QUrl(url(m_ts != 0))));
|
||||
new QReplyTimeout(reply, 1000);
|
||||
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url())));
|
||||
new QReplyTimeout(reply, 5000);
|
||||
}
|
||||
|
||||
// update value
|
||||
@ -319,51 +318,52 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *reply)
|
||||
}
|
||||
|
||||
// convert to map
|
||||
QVariantMap json = jsonDoc.toVariant().toMap();
|
||||
if (json[QString("cod")].toInt() != 200) {
|
||||
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code"
|
||||
<< json[QString("cod")].toInt();
|
||||
QVariantMap json = jsonDoc.toVariant().toMap()[QString("query")].toMap();
|
||||
if (json[QString("count")].toInt() != 1) {
|
||||
qCWarning(LOG_LIB) << "Found data count"
|
||||
<< json[QString("count")].toInt() << "is not 1";
|
||||
return;
|
||||
}
|
||||
QVariantMap results
|
||||
= json[QString("results")].toMap()[QString("channel")].toMap();
|
||||
QVariantMap item = results[QString("item")].toMap();
|
||||
|
||||
QVariantHash data;
|
||||
if (m_ts == 0) {
|
||||
data = parseSingleJson(json);
|
||||
// current weather
|
||||
int id = item[QString("condition")].toMap()[QString("code")].toInt();
|
||||
values[tag(QString("weatherId"))] = id;
|
||||
values[tag(QString("weather"))] = weatherFromInt(id);
|
||||
values[tag(QString("temperature"))]
|
||||
= item[QString("condition")].toMap()[QString("temp")].toInt();
|
||||
values[tag(QString("timestamp"))]
|
||||
= item[QString("condition")].toMap()[QString("date")].toString();
|
||||
values[tag(QString("humidity"))] = results[QString("atmosphere")]
|
||||
.toMap()[QString("humidity")]
|
||||
.toInt();
|
||||
values[tag(QString("pressure"))]
|
||||
= static_cast<int>(results[QString("atmosphere")]
|
||||
.toMap()[QString("pressure")]
|
||||
.toFloat());
|
||||
} else {
|
||||
QVariantList list = json[QString("list")].toList();
|
||||
data = parseSingleJson(list.count() <= m_ts ? list.at(m_ts - 1).toMap()
|
||||
: list.last().toMap());
|
||||
// forecast weather
|
||||
QVariantList weatherList = item[QString("forecast")].toList();
|
||||
QVariantMap weatherMap = weatherList.count() < m_ts
|
||||
? weatherList.last().toMap()
|
||||
: weatherList.at(m_ts).toMap();
|
||||
int id = weatherMap[QString("code")].toInt();
|
||||
values[tag(QString("weatherId"))] = id;
|
||||
values[tag(QString("weather"))] = weatherFromInt(id);
|
||||
values[tag(QString("timestamp"))]
|
||||
= weatherMap[QString("date")].toString();
|
||||
// yahoo provides high and low temperatures. Lets calculate average one
|
||||
values[tag(QString("temperature"))]
|
||||
= (weatherMap[QString("high")].toFloat()
|
||||
+ weatherMap[QString("low")].toFloat())
|
||||
/ 2.0;
|
||||
// ... and no forecast data for humidity and pressure
|
||||
values[tag(QString("humidity"))] = 0;
|
||||
values[tag(QString("pressure"))] = 0.0;
|
||||
}
|
||||
foreach (QString key, data.keys())
|
||||
values[tag(key)] = data[key];
|
||||
}
|
||||
|
||||
|
||||
QVariantHash ExtWeather::parseSingleJson(const QVariantMap json) const
|
||||
{
|
||||
qCDebug(LOG_LIB) << "Single json data" << json;
|
||||
|
||||
QVariantHash output;
|
||||
|
||||
// weather status
|
||||
QVariantList weather = json[QString("weather")].toList();
|
||||
if (!weather.isEmpty()) {
|
||||
int _id = weather.first().toMap()[QString("id")].toInt();
|
||||
output[QString("weatherId")] = _id;
|
||||
output[QString("weather")] = weatherFromInt(_id);
|
||||
}
|
||||
|
||||
// main data
|
||||
QVariantMap mainWeather = json[QString("main")].toMap();
|
||||
if (!weather.isEmpty()) {
|
||||
output[QString("humidity")]
|
||||
= mainWeather[QString("humidity")].toFloat();
|
||||
output[QString("pressure")]
|
||||
= mainWeather[QString("pressure")].toFloat();
|
||||
output[QString("temperature")] = mainWeather[QString("temp")].toFloat();
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
@ -381,13 +381,10 @@ void ExtWeather::translate()
|
||||
}
|
||||
|
||||
|
||||
QString ExtWeather::url(const bool isForecast) const
|
||||
QString ExtWeather::url() const
|
||||
{
|
||||
qCDebug(LOG_LIB) << "Is forecast" << isForecast;
|
||||
|
||||
QString apiUrl = isForecast ? QString(OWM_FORECAST_URL) : QString(OWM_URL);
|
||||
apiUrl.replace(QString("$CITY"), m_city);
|
||||
apiUrl.replace(QString("$COUNTRY"), m_country);
|
||||
QString apiUrl = QString(YAHOO_WEATHER_URL).arg(m_city).arg(m_country);
|
||||
qCInfo(LOG_LIB) << "API url" << apiUrl;
|
||||
|
||||
return apiUrl;
|
||||
|
@ -22,12 +22,10 @@
|
||||
|
||||
#include "abstractextitem.h"
|
||||
|
||||
#define OWM_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"weather?q=$CITY,$COUNTRY&units=metric"
|
||||
#define OWM_FORECAST_URL \
|
||||
"http://api.openweathermap.org/data/2.5/" \
|
||||
"forecast?q=$CITY,$COUNTRY&units=metric"
|
||||
#define YAHOO_WEATHER_URL \
|
||||
"https://query.yahooapis.com/v1/public/yql?format=json&q=select * from " \
|
||||
"weather.forecast where u='c' and woeid in (select woeid from " \
|
||||
"geo.places(1) where text='%1, %2')"
|
||||
|
||||
|
||||
namespace Ui
|
||||
@ -76,9 +74,8 @@ private:
|
||||
QNetworkAccessManager *manager;
|
||||
bool isRunning = false;
|
||||
Ui::ExtWeather *ui;
|
||||
QVariantHash parseSingleJson(const QVariantMap json) const;
|
||||
void translate();
|
||||
QString url(const bool isForecast = false) const;
|
||||
QString url() const;
|
||||
// properties
|
||||
QString m_city = QString("London");
|
||||
QString m_country = QString("uk");
|
||||
|
BIN
sources/awesomewidgets/weather/0.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
BIN
sources/awesomewidgets/weather/1.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/10.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.7 KiB |
BIN
sources/awesomewidgets/weather/11.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.7 KiB |
BIN
sources/awesomewidgets/weather/12.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/13.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.8 KiB |
BIN
sources/awesomewidgets/weather/14.gif
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
sources/awesomewidgets/weather/15.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
sources/awesomewidgets/weather/16.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/17.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
sources/awesomewidgets/weather/18.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/19.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
sources/awesomewidgets/weather/2.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/20.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
sources/awesomewidgets/weather/21.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
sources/awesomewidgets/weather/22.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
sources/awesomewidgets/weather/23.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
sources/awesomewidgets/weather/24.gif
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
sources/awesomewidgets/weather/25.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
sources/awesomewidgets/weather/26.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
sources/awesomewidgets/weather/27.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
sources/awesomewidgets/weather/28.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
sources/awesomewidgets/weather/29.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/3.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
sources/awesomewidgets/weather/30.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/31.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
sources/awesomewidgets/weather/32.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/3200.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
sources/awesomewidgets/weather/33.gif
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
sources/awesomewidgets/weather/34.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/35.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
sources/awesomewidgets/weather/36.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/37.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/38.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/39.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/4.gif
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
sources/awesomewidgets/weather/40.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
sources/awesomewidgets/weather/41.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/42.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/43.gif
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
sources/awesomewidgets/weather/44.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/45.gif
Normal file
After Width: | Height: | Size: 980 B |
BIN
sources/awesomewidgets/weather/46.gif
Normal file
After Width: | Height: | Size: 996 B |
BIN
sources/awesomewidgets/weather/47.gif
Normal file
After Width: | Height: | Size: 972 B |
BIN
sources/awesomewidgets/weather/5.gif
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 3.3 KiB |
BIN
sources/awesomewidgets/weather/6.gif
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
sources/awesomewidgets/weather/7.gif
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
sources/awesomewidgets/weather/8.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
sources/awesomewidgets/weather/9.gif
Normal file
After Width: | Height: | Size: 2.0 KiB |