!178 fix: 修复主窗口关闭后,关于窗口没有自动关闭的问题

* 添加 Application 类,继承 DApplication,将 main 函数中设置属性、关于信息等操作移至 Application 构造函数中进行
* 1.1. 添加 setOrganizationName 操作,设置组织名称为 spark-union,与 SWRT 保持一致
* 1.2. 设置组织名称后,QStandardPaths::AppConfigLocation 等路径相应改变,修改所有配置文件和缓存文件路径(server.list/config.ini 等)
* 1.3. 关于对话框设置父对象后,对话框背景色受主窗口样式表影响,移动部分控件样式表设置方式与位置
* 修复关于窗口不显示组织 Logo 的问题,补充丢失的资源文件,整理资源文件
* 去除 .pro 文件中无效的更新翻译文件脚本调用,整理 .pro 文件,添加编译时更新 ts 文件脚本调用
* 继续修复偶现关闭客户端时崩溃问题(疑似 aria2c 进程未启动,pid 未初始化为随机值,执行 kill 操作时未判断导致)
* 修复进入详情页时焦点默认在分享链接按钮上的问题
* 暂时去除没有意义的 DBus 接口,使用 DGuiApplicationHelper::newProcessInstance 获取新进程的启动参数
* 更新翻译文件,去除已经不存在的翻译
This commit is contained in:
2022-12-25 08:28:05 +00:00
committed by Pluto
parent 1b9c925183
commit f99c0839dd
24 changed files with 752 additions and 1427 deletions

View File

@@ -1,39 +1,45 @@
#include "sparkapi.h"
#include <QSettings>
#include <QStandardPaths>
#include <QDebug>
QString SparkAPI::serverUrl = "";
SparkAPI::SparkAPI(QObject *parent) : QObject(parent)
{
QSettings readConfig(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat);
if (!readConfig.value("server/choose").toString().isEmpty() && readConfig.value("server/updated").toString() == "TRUE")
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
if (!config.value("server/choose").toString().isEmpty() && config.value("server/updated").toBool())
{
SparkAPI::setServerUrl(readConfig.value("server/choose").toString());
SparkAPI::setServerUrl(config.value("server/choose").toString());
}
}
void SparkAPI::get(QUrl url)
{
QNetworkRequest request;
HttpRequest *httprequest = new HttpRequest;
request.setUrl(QUrl(url.toString().replace("+", "%2B")));
connect(httprequest, &HttpRequest::finished, [=](QString data)
{
{
QByteArray arr = data.toUtf8();
//解析Json
QJsonParseError error;
if(QJsonDocument::fromJson(arr,&error).isArray())
{
auto doc = QJsonDocument::fromJson(arr,&error).array();
emit finished(doc);
}else {
auto doc = QJsonDocument::fromJson(arr,&error).object();
emit finishedObject(doc);
}
// 解析 Json
QJsonParseError error;
if(QJsonDocument::fromJson(arr,&error).isArray())
{
auto doc = QJsonDocument::fromJson(arr,&error).array();
emit finished(doc);
} else {
auto doc = QJsonDocument::fromJson(arr,&error).object();
emit finishedObject(doc);
}
httprequest->deleteLater();
});
httprequest->deleteLater(); });
httprequest->getRequest(request);
}
void SparkAPI::getRAW(QUrl url)
{
QNetworkRequest request;
@@ -45,30 +51,37 @@ void SparkAPI::getRAW(QUrl url)
httprequest->deleteLater(); });
httprequest->getRequest(request);
}
void SparkAPI::getAppList(QString type)
{
get(QUrl(getServerUrl() + "store/" + type + "/applist.json"));
}
void SparkAPI::getSearchList(QString keyword)
{
get(QUrl("https://search.deepinos.org.cn/appinfo/search?keyword=" + keyword));
}
void SparkAPI::getAppInfo(QUrl spk)
{
get(QUrl(getServerUrl() + "store" + spk.path().replace("+", "%2B") + "/app.json"));
}
void SparkAPI::getAppDownloadTimes(QUrl spk)
{
getRAW(QUrl(getServerUrl() + "store" + spk.path().replace("+", "%2B") + "/download-times.txt"));
}
QString SparkAPI::getServerUrl()
{
return SparkAPI::serverUrl;
}
QString SparkAPI::getImgServerUrl()
{
return SparkAPI::serverUrl;
}
void SparkAPI::setServerUrl(QString url)
{
SparkAPI::serverUrl = url;