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 }