EstervOpenMeteo 0.4.0
OpenMeteo client library
Loading...
Searching...
No Matches
o_m_client.hpp
1#pragma once
2
3#include <QJsonObject>
4#include <QJsonValue>
5#include <QNetworkAccessManager>
6#include <QNetworkReply>
7#include <QtCore/QtGlobal>
8
9#if defined(USE_QML)
10#include <QtQml>
11#endif
12
13#if defined(WINDOWS_OMClient)
14#define OMClient_EXPORT Q_DECL_EXPORT
15#else
16#define OMClient_EXPORT Q_DECL_IMPORT
17#endif
18
20
21class OMClient_EXPORT OMResponse : public QObject {
22 Q_OBJECT
23public:
24 OMResponse(QNetworkReply *thereply);
25 void fill();
26 void errorFound(QNetworkReply::NetworkError code);
27signals:
28 void returned(QJsonValue data);
29
30private:
31 QNetworkReply *m_reply;
32};
33
34class OMClient_EXPORT OMClient : public QObject {
35 Q_OBJECT
36#if defined(USE_QML)
37 Q_PROPERTY(QJsonObject currentWeather READ currentWeather NOTIFY
38 currentWeatherChanged)
39 Q_PROPERTY(
40 float latitude READ latitude WRITE setLatitude NOTIFY positionChanged)
41 Q_PROPERTY(
42 float longitude READ longitude WRITE setLongitude NOTIFY positionChanged)
43 Q_PROPERTY(TempUnit tempUnit MEMBER m_tempUnit NOTIFY tempUnitChanged)
44 Q_PROPERTY(QUrl apiUrl MEMBER m_apiUrl NOTIFY apiUrlChanged)
45 QML_ELEMENT
46#endif
47
48public:
49 OMClient(QObject *parent = nullptr);
50 Q_INVOKABLE void getCurrentWeather(void);
51 QJsonObject currentWeather() const { return m_currentWeather; }
52 float latitude() const { return m_latitude; }
53 float longitude() const { return m_longitude; }
54 void setLatitude(float lat) {
55 if (lat != m_latitude && lat >= -90 && lat <= 90) {
56 m_latitude = lat;
57 emit positionChanged();
58 }
59 }
60 void setLongitude(float lon) {
61 if (lon != m_longitude && lon >= -180 && lon <= 180) {
62 m_longitude = lon;
63 emit positionChanged();
64 }
65 }
66 enum TempUnit { Celsius = 0, Fahrenheit };
67
68 Q_ENUM(TempUnit)
69
70 void setAPIUrl(const QUrl apiUrl);
71
72signals:
73 void currentWeatherChanged();
74 void positionChanged();
75 void tempUnitChanged();
76 void apiUrlChanged();
77
78private:
79 OMResponse *getReplyRest(const QString &path,
80 const QString &query = QString()) const;
81 QUrl m_apiUrl;
83 QJsonObject m_currentWeather;
84 float m_latitude, m_longitude;
85 TempUnit m_tempUnit;
86 static QHash<TempUnit, QString> tempUnitStr;
87};
88} // namespace Esterv::Utils::Weather
Definition o_m_client.hpp:34
float longitude() const
Definition o_m_client.hpp:53
TempUnit
Definition o_m_client.hpp:66
void setLongitude(float lon)
Definition o_m_client.hpp:60
float latitude() const
Definition o_m_client.hpp:52
void setLatitude(float lat)
Definition o_m_client.hpp:54
QJsonObject currentWeather() const
Definition o_m_client.hpp:51
Definition o_m_client.hpp:21
Definition o_m_client.hpp:19