ukui-screensaver/screensaver/weathermanager.h

123 lines
3.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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