113 lines
4.6 KiB
Diff
113 lines
4.6 KiB
Diff
|
|
diff -Naur indicator-china-weather-3.1.0/src/geoipworker.cpp indicator-china-weather-3.1.0~/src/geoipworker.cpp
|
|||
|
|
--- indicator-china-weather-3.1.0/src/geoipworker.cpp 2021-11-27 03:59:19.000000000 +0800
|
|||
|
|
+++ indicator-china-weather-3.1.0~/src/geoipworker.cpp 2022-01-10 14:49:04.598862385 +0800
|
|||
|
|
@@ -264,29 +264,33 @@
|
|||
|
|
|
|||
|
|
const QString automaicCity()
|
|||
|
|
{
|
|||
|
|
- QString ip;
|
|||
|
|
- QString city;
|
|||
|
|
+// QString ip;
|
|||
|
|
+// QString city;
|
|||
|
|
|
|||
|
|
- getIpAndCityByUbuntu(UbuntuUrl, ip, city);
|
|||
|
|
- if (ip.isEmpty() || ip == "0.0.0.0") {
|
|||
|
|
- ip = getIpByPconline(PconlineUrl);
|
|||
|
|
- }
|
|||
|
|
-
|
|||
|
|
-// qDebug() << "ip:" << ip;
|
|||
|
|
-
|
|||
|
|
- if (city.isEmpty()) {
|
|||
|
|
- city = getCityFromIPAddr(ip);//根据ip从geoip库定位城市
|
|||
|
|
- if (city.isEmpty()) {
|
|||
|
|
- city = getCityFromIpByAmap(ip);//根据ip从高德API定位城市,该方式使用高德key,访问次数有限
|
|||
|
|
- }
|
|||
|
|
- if (city.isEmpty()) {
|
|||
|
|
- city = getCityFromIpByTaobao(ip);//根据ip从淘宝service定位城市,该方式访问速度慢,可能访问失败
|
|||
|
|
- }
|
|||
|
|
- }
|
|||
|
|
-
|
|||
|
|
-// qDebug() << "city:" << city;
|
|||
|
|
-
|
|||
|
|
- return city;
|
|||
|
|
+// getIpAndCityByUbuntu(UbuntuUrl, ip, city);
|
|||
|
|
+// if (ip.isEmpty() || ip == "0.0.0.0") {
|
|||
|
|
+// ip = getIpByPconline(PconlineUrl);
|
|||
|
|
+// }
|
|||
|
|
+// if (city.isEmpty()) {
|
|||
|
|
+// city = getCityFromIPAddr(ip);//根据ip从geoip库定位城市
|
|||
|
|
+// if (city.isEmpty()) {
|
|||
|
|
+// city = getCityFromIpByAmap(ip);//根据ip从高德API定位城市,该方式使用高德key,访问次数有限
|
|||
|
|
+// }
|
|||
|
|
+// if (city.isEmpty()) {
|
|||
|
|
+// city = getCityFromIpByTaobao(ip);//根据ip从淘宝service定位城市,该方式访问速度慢,可能访问失败
|
|||
|
|
+// }
|
|||
|
|
+// }
|
|||
|
|
+// return city;
|
|||
|
|
+ QNetworkAccessManager *manager = new QNetworkAccessManager();
|
|||
|
|
+ QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://myip.ipip.net")));
|
|||
|
|
+ QByteArray responseData ;
|
|||
|
|
+ QEventLoop eventLoop;
|
|||
|
|
+ QObject::connect(manager,&QNetworkAccessManager::finished,&eventLoop,&QEventLoop::quit);
|
|||
|
|
+ eventLoop.exec();
|
|||
|
|
+ responseData = reply->readAll();
|
|||
|
|
+ QString str = responseData;
|
|||
|
|
+ QStringList respList = str.split(' ');
|
|||
|
|
+ return respList[5];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} // namespace
|
|||
|
|
diff -Naur indicator-china-weather-3.1.0/src/geoipworker.h indicator-china-weather-3.1.0~/src/geoipworker.h
|
|||
|
|
--- indicator-china-weather-3.1.0/src/geoipworker.h 2021-11-27 03:59:19.000000000 +0800
|
|||
|
|
+++ indicator-china-weather-3.1.0~/src/geoipworker.h 2022-01-10 14:49:04.574862040 +0800
|
|||
|
|
@@ -21,6 +21,10 @@
|
|||
|
|
#define GEOIP_WORKER_H
|
|||
|
|
|
|||
|
|
#include <QObject>
|
|||
|
|
+#include <QNetworkAccessManager>
|
|||
|
|
+#include <QNetworkReply>
|
|||
|
|
+#include <QNetworkRequest>
|
|||
|
|
+#include <QEventLoop>
|
|||
|
|
|
|||
|
|
class QNetworkAccessManager;
|
|||
|
|
class QNetworkReply;
|
|||
|
|
diff -Naur indicator-china-weather-3.1.0/src/mainwindow.cpp indicator-china-weather-3.1.0~/src/mainwindow.cpp
|
|||
|
|
--- indicator-china-weather-3.1.0/src/mainwindow.cpp 2021-11-27 03:59:19.000000000 +0800
|
|||
|
|
+++ indicator-china-weather-3.1.0~/src/mainwindow.cpp 2022-01-10 14:49:04.606862500 +0800
|
|||
|
|
@@ -361,11 +361,12 @@
|
|||
|
|
//根据获取到网络探测的结果分别处理
|
|||
|
|
connect(m_weatherManager, &WeatherManager::nofityNetworkStatus, this, [=] (const QString &status) {
|
|||
|
|
if (status == "OK") {
|
|||
|
|
- //m_weatherManager->startAutoLocationTask();//开始自动定位城市
|
|||
|
|
+ m_weatherManager->startAutoLocationTask();//开始自动定位城市
|
|||
|
|
|
|||
|
|
//CN101010100,beijing,北京,CN,China,中国
|
|||
|
|
- // m_weatherManager->startGetTheWeatherData("101010100");
|
|||
|
|
+// m_weatherManager->startGetTheWeatherData("101010100");
|
|||
|
|
QStringList listCityId = getCityList().split(",");
|
|||
|
|
+ qDebug()<<"listCityId:"<<listCityId;
|
|||
|
|
m_weatherManager->startGetTheWeatherData(listCityId.at(0));
|
|||
|
|
} else {
|
|||
|
|
if (status == "Fail") {
|
|||
|
|
@@ -381,6 +382,9 @@
|
|||
|
|
connect(m_weatherManager, &WeatherManager::requestAutoLocationData, this, [=] (const CitySettingData &info, bool success) {
|
|||
|
|
if (success) {
|
|||
|
|
//自动定位城市成功后,更新各个ui,然后获取天气数据
|
|||
|
|
+ m_weatherManager->startGetTheWeatherData(info.id);
|
|||
|
|
+
|
|||
|
|
+
|
|||
|
|
} else {
|
|||
|
|
//自动定位城市失败后,获取天气数据
|
|||
|
|
}
|
|||
|
|
diff -Naur indicator-china-weather-3.1.0/src/weathermanager.cpp indicator-china-weather-3.1.0~/src/weathermanager.cpp
|
|||
|
|
--- indicator-china-weather-3.1.0/src/weathermanager.cpp 2021-11-27 03:59:19.000000000 +0800
|
|||
|
|
+++ indicator-china-weather-3.1.0~/src/weathermanager.cpp 2022-01-10 14:49:04.559861824 +0800
|
|||
|
|
@@ -165,7 +165,6 @@
|
|||
|
|
}
|
|||
|
|
file.close();
|
|||
|
|
}
|
|||
|
|
-
|
|||
|
|
if (autoSuccess) {
|
|||
|
|
emit this->requestAutoLocationData(info, true);
|
|||
|
|
} else {
|