123 lines
3.2 KiB
C
123 lines
3.2 KiB
C
|
/*
|
|||
|
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
|||
|
*
|
|||
|
* This program is free software; you can redistribute it and/or modify
|
|||
|
* it under the terms of the GNU General Public License as published by
|
|||
|
* the Free Software Foundation; either version 3, or (at your option)
|
|||
|
* any later version.
|
|||
|
*
|
|||
|
* This program is distributed in the hope that it will be useful,
|
|||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|||
|
* GNU General Public License for more details.
|
|||
|
*
|
|||
|
* You should have received a copy of the GNU General Public License
|
|||
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|||
|
*
|
|||
|
* Authors: ZHAI Kang-ning <zhaikangning@kylinos.cn>
|
|||
|
**/
|
|||
|
#ifndef WEATHERMANAGER_H
|
|||
|
#define WEATHERMANAGER_H
|
|||
|
|
|||
|
#include <QObject>
|
|||
|
#include <functional>
|
|||
|
#include <QTimer>
|
|||
|
#include <QGSettings>
|
|||
|
|
|||
|
#include "../src/networkwatcher.h"
|
|||
|
|
|||
|
class QNetworkAccessManager;
|
|||
|
class QNetworkReply;
|
|||
|
class LocalWeatherInfo;
|
|||
|
|
|||
|
class WeatherManager : public QObject
|
|||
|
{
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
explicit WeatherManager(QObject *parent = nullptr);
|
|||
|
|
|||
|
Q_SIGNALS:
|
|||
|
void onWeatherUpdate(QString city, QString cond, QString temperature);
|
|||
|
|
|||
|
private Q_SLOTS:
|
|||
|
void replyFinished(QNetworkReply *);
|
|||
|
void onNetworkStateChanged(uint state);
|
|||
|
|
|||
|
public:
|
|||
|
void getWeather();
|
|||
|
QPixmap getWeatherIcon();
|
|||
|
QPixmap getWeatherIcon(QString cond);
|
|||
|
|
|||
|
QString getCityName();
|
|||
|
QString getCond();
|
|||
|
QString getTemperature();
|
|||
|
|
|||
|
private:
|
|||
|
bool updateLocation();//更新位置,从用户设置获取城市信息,如有多个,只取第一个,未对接
|
|||
|
void weatherRequest();
|
|||
|
|
|||
|
bool getLogcalWeather();
|
|||
|
QString getLogcalCityId();
|
|||
|
|
|||
|
private:
|
|||
|
QString m_city_id; // "101030100" 默认天津
|
|||
|
QString m_city_name;
|
|||
|
QString m_cond_txt; //天气条件 晴、阴等
|
|||
|
QString m_temperature;//温度 10、20等
|
|||
|
|
|||
|
QNetworkAccessManager *m_net_manager;
|
|||
|
QTimer *m_timer;
|
|||
|
QGSettings *m_settings;
|
|||
|
|
|||
|
LocalWeatherInfo *m_local_weather_info;
|
|||
|
NetWorkWatcher *m_networkWatcher;
|
|||
|
|
|||
|
int m_networkTryNum = 0;
|
|||
|
};
|
|||
|
|
|||
|
class LocalWeatherInfo : QObject
|
|||
|
{
|
|||
|
//"1920-08-27 10:17:42,101310204,澄迈,小雨,95%,25℃,北风,1级," 时间,城市编码,城市名称,天气,湿度,温度,风向,风力
|
|||
|
Q_OBJECT
|
|||
|
public:
|
|||
|
explicit LocalWeatherInfo(QObject *parent = nullptr);
|
|||
|
|
|||
|
private:
|
|||
|
QString m_update_time;
|
|||
|
QString m_city_id;
|
|||
|
QString m_city_name;
|
|||
|
QString m_cond_text;
|
|||
|
QString m_air_humidity;
|
|||
|
QString m_temperature;
|
|||
|
QString m_wind_direction;
|
|||
|
QString m_wind_force;
|
|||
|
public:
|
|||
|
bool isTimeValid();
|
|||
|
|
|||
|
void setTime(QString time);
|
|||
|
QString getTime();
|
|||
|
|
|||
|
void setCityId(QString cityId);
|
|||
|
QString getCityId();
|
|||
|
|
|||
|
void setCityName(QString cityName);
|
|||
|
QString getCityName();
|
|||
|
|
|||
|
void setCondText(QString condText);
|
|||
|
QString getCondText();
|
|||
|
|
|||
|
void setAirHumidity(QString airHumidity);
|
|||
|
QString getAirHumidity();
|
|||
|
|
|||
|
void setTemperature(QString temperature);
|
|||
|
QString getTemperature();
|
|||
|
|
|||
|
void setWindDirection(QString windDirection);
|
|||
|
QString getWindDirection();
|
|||
|
|
|||
|
void setWindForce(QString windForce);
|
|||
|
QString getWindForce();
|
|||
|
};
|
|||
|
|
|||
|
#endif // WEATHERMANAGER_H
|