File indexing completed on 2024-05-05 16:49:23
0001 #pragma once 0002 #include "weatherforecast.h" 0003 #include <QObject> 0004 class QNetworkReply; 0005 namespace KWeatherCore 0006 { 0007 class WeatherForecastSource; 0008 class SunriseSource; 0009 class PendingWeatherForecast; 0010 class PendingWeatherForecastPrivate : public QObject 0011 { 0012 Q_OBJECT 0013 public: 0014 PendingWeatherForecastPrivate(double latitude, 0015 double longitude, 0016 const QString &timezone, 0017 QNetworkReply *reply, 0018 const std::vector<Sunrise> &sunrise, 0019 PendingWeatherForecast *parent = nullptr); 0020 QExplicitlySharedDataPointer<WeatherForecast> forecast; 0021 bool isFinished = false; 0022 0023 Q_SIGNALS: 0024 void networkError(); 0025 void finished(); 0026 private Q_SLOTS: 0027 void parseWeatherForecastResults(QNetworkReply *ret); 0028 void parseSunriseResults(); 0029 void parseTimezoneResult(const QString &timezone); 0030 0031 private: 0032 void parseOneElement(const QJsonObject &obj, 0033 std::vector<HourlyWeatherForecast> &hourlyForecast); 0034 void getTimezone(double latitude, double longitude); 0035 void getSunrise(); 0036 void applySunriseToForecast(); 0037 0038 bool hasTimezone = false; 0039 bool hasSunrise = false; 0040 double m_latitude, m_longitude; 0041 QString m_timezone; 0042 0043 std::vector<HourlyWeatherForecast> hourlyForecast; // tmp hourly vector 0044 0045 SunriseSource *m_sunriseSource = nullptr; 0046 0047 QDateTime m_expiresTime; 0048 }; 0049 }