Return to owm weather provider

Since yahoo support already exists, so I've added new option
X-AW-Provider (apiver 3). Added tests for these cases
This commit is contained in:
2016-06-02 11:09:02 +03:00
parent 4337379177
commit 620c4bd1e3
26 changed files with 704 additions and 131 deletions

View File

@ -22,12 +22,8 @@
#include "abstractextitem.h"
#define YAHOO_WEATHER_URL "https://query.yahooapis.com/v1/public/yql"
#define YAHOO_WEATHER_QUERY \
"select * from weather.forecast where u='c' and woeid in (select woeid " \
"from geo.places(1) where text='%1, %2')"
class AbstractWeatherProvider;
namespace Ui
{
class ExtWeather;
@ -39,9 +35,13 @@ class ExtWeather : public AbstractExtItem
Q_PROPERTY(QString city READ city WRITE setCity)
Q_PROPERTY(QString country READ country WRITE setCountry)
Q_PROPERTY(bool image READ image WRITE setImage)
Q_PROPERTY(Provider povider READ provider WRITE setProvider)
Q_PROPERTY(QString strPovider READ strProvider WRITE setStrProvider)
Q_PROPERTY(int ts READ ts WRITE setTs)
public:
enum class Provider { OWM = 0, Yahoo = 1 };
explicit ExtWeather(QWidget *parent, const QString filePath = QString());
virtual ~ExtWeather();
ExtWeather *copy(const QString _fileName, const int _number);
@ -50,12 +50,16 @@ public:
QString city() const;
QString country() const;
bool image() const;
Provider provider() const;
QString strProvider() const;
int ts() const;
QString uniq() const;
// set methods
void setCity(const QString _city = QString("London"));
void setCountry(const QString _country = QString("uk"));
void setImage(const bool _image = false);
void setProvider(const Provider _provider = Provider::OWM);
void setStrProvider(const QString _provider = QString("OWM"));
void setTs(const int _ts = 0);
public slots:
@ -70,15 +74,16 @@ private slots:
private:
QNetworkAccessManager *m_manager = nullptr;
QUrl m_url;
AbstractWeatherProvider *m_providerObject = nullptr;
bool isRunning = false;
Ui::ExtWeather *ui = nullptr;
void initUrl();
void initProvider();
void translate();
// properties
QString m_city = QString("London");
QString m_country = QString("uk");
bool m_image = false;
Provider m_provider = Provider::OWM;
int m_ts = 0;
QVariantMap m_jsonMap = QVariantMap();
// values